XamlParseException When Using EventToCommandBehavior with the IsEnabledChanged Event
Environment
Product | Version |
---|---|
Telerik UI for WPF | 2023.3.1114 |
Description
ArgumentException
(often wrapped in XamlParseException
) is thrown when using the EventToCommandBehavior with the IsEnabledChanged event.
The exception messages are:
XamlParseException
: "Add value to collection of type 'Telerik.Windows.Controls.EventBindingCollection' threw an exception."ArgumentException
: "Cannot bind to the target method because its signature is not compatible with that of the delegate type."
Solution
This happens because the EventToCommandBehavior
supports only events with arguments deriving from the EventArgs class. IsEnabledChanged
along with few more UIElement events are using the DependencyPropertyChangedEventHandler delegate which works with the DependencyPropertyChangedEventArgs struct. This type of arguments doesn't derive from EventArgs
.
To resolve the error, you can avoid using the EventToCommandBehavior
and execute the command in code-behind. Or you can data bind the IsEnabled
property of the corresponding element to a property in the view model, and then execute the command's logic in the property setter.
<telerik:RadListBox IsEnabled="{Binding IsEnabled, Modet=TwoWay}" />
private bool isEnabled;
public bool IsEnabled
{
get { return isEnabled; }
set
{
isEnabled = value;
OnPropertyChanged(nameof(IsEnabled));
// execute command logic here
}
}