2010-09-15 26 views
0

要處理TreeView.SelectedItemChanged事件,我有一個綁定到命令的附加行爲。InvalidCastException當WPF TreeView中的選擇更改時

通常,RoutedPropertyChangedEventArgs.NewValue屬性包含到我的視圖模型對象中的一個基準,然後我可以通過這個上作爲參數ICommand.CanExecuteICommand.Execute。我使用RelayCommandhere,但我有一個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例外,但我想知道的根本原因是什麼。

回答

1

DisconnectedItem是TreeViewItem不再在您的TreeView中(即已從樹中刪除)。

+0

OK。任何想法爲什麼我在SelectionChanged事件處理程序中看到一個? – 2010-09-15 14:15:28

0

有趣;你是否像對照模板一樣用樹視圖來做任何不尋常的事情?它是實際的內置樹視圖還是繼承它的類?它可能與虛擬化有關,但它絕對不應該發生在我認爲的正常情況下。 OK。

+0

我有一個''和一個'',但我還沒有做任何事情(但)與控制模板。 – 2010-09-20 10:45:16