2013-11-01 90 views
0

我在我的程序中有兩個TreeViews以相同的方式處理SelectedItemChanged。問題是一個工作正常,另一個拋出NullReferenceException。唯一的例外獲取當一個節點被取消的一棵樹上扔...TreeView節點上的NullReferenceException取消選擇

如何SelectedItemChanged是在代碼隱藏兩個樹進行處理:

//How *ViewModel* is declared... 
public DatabaseViewModel ViewModel { get { return DataContext as DatabaseViewModel; } } 

//Gets selected item in TreeView 
private void Tree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) 
{ 
    var data = e.NewValue as TreeModel; 
    ViewModel.Tree.SelectedItem = data; 
} 

這基本上是發生了什麼:

在問題樹

-A節點被選擇

- 下,在表現良好的樹中的節點被選擇

-A然後在問題樹的代碼隱藏線上拋出:ViewModel.Tree.SelectedItem = data.。例外說:「對象引用未設置爲對象的實例」。

這裏怎麼回事,我該如何解決?謝謝。

*注意:我只想指出,這不會發生在另一棵樹上。

+0

您已經驗證的DataContext在不好的情況下實際上是DatabaseViewModel的實例?在引發異常的行上設置斷點,然後您可以檢查DataContext。 – foosburger

回答

1

試試這個:

//Gets selected item in TreeView 
private void Tree_SelectedItemChanged(object sender,RoutedPropertyChangedEventArgs<object> e) 
{ 
    var data = e.NewValue as TreeModel; 
    if(data!=null) 
    ViewModel.Tree.SelectedItem = data; 
} 
+0

這幾乎是如此簡單,我可能應該想到它。無論如何,謝謝它運作良好! =) –

+0

@Ericafterdark::)你是歡迎,我很高興幫助你。 –