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
}
}