Для обработки события TreeView.SelectedItemChanged
у меня есть прикрепленное поведение, которое привязывается к команде.
Обычно свойство RoutedPropertyChangedEventArgs.NewValue
содержит ссылку на один из моих объектов модели представления, и я могузатем передайте это в качестве аргумента ICommand.CanExecute
и ICommand.Execute
.Я использую RelayCommand
из здесь , но у меня есть RelayCommand<T>
, который приводит к ожидаемому типу.
Однако в некоторых сценариях RoutedPropertyChangedEventArgs.NewValue
содержит TreeViewItem
, отображается как {System.Windows.Controls.TreeViewItem Header:{DisconnectedItem} Items.Count:0}
в отладчике.
Это заставляет мой RelayCommand<T>
выбросить InvalidCastException
.
Вопрос: что это за таинственный TreeViewItem
иоткуда оно взято?
Я знаю, что могу избежать исключения, изменив RelayCommand<T>.Execute
с использования (T)value
на value as T
, но я хотел бы знать, чтоОсновная причина.