要處理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