要处理TreeView.SelectedItemChanged
事件,我有一个绑定到命令的附加行为。InvalidCastException当WPF TreeView中的选择更改时
通常,RoutedPropertyChangedEventArgs.NewValue
属性包含到我的视图模型对象中的一个基准,然后我可以通过这个上作为参数ICommand.CanExecute
和ICommand.Execute
。我使用RelayCommand
从here,但我有一个RelayCommand<T>
转换为预期的类型。
但是,在某些情况下,RoutedPropertyChangedEventArgs.NewValue
包含TreeViewItem
,在调试器中显示为{System.Windows.Controls.TreeViewItem Header:{DisconnectedItem} Items.Count:0}
。
这会导致我的RelayCommand<T>
抛出InvalidCastException
。
问题:这是什么神秘的TreeViewItem
和它从哪里来的?
我知道,我能避免使用(T)value
使用value as T
改变RelayCommand<T>.Execute
例外,但我想知道的根本原因是什么。
OK。任何想法为什么我在SelectionChanged事件处理程序中看到一个? – 2010-09-15 14:15:28