【发布时间】:2013-11-01 20:28:59
【问题描述】:
我的程序中有两个TreeViews,它们以相同的方式处理SelectedItemChanged。问题是一个工作正常,另一个抛出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 NullReferenceException 然后被抛出:ViewModel.Tree.SelectedItem = data. 在问题树的代码隐藏中。异常说:“对象引用未设置为对象的实例”。
这里出了什么问题,我该如何解决?谢谢。
*注意:我只想指出,其他树不会发生这种情况。
【问题讨论】:
-
你验证过坏情况下的DataContext实际上是DatabaseViewModel的一个实例吗?在抛出异常的那一行设置断点,然后就可以查看DataContext了。
标签: c# wpf treeview selecteditemchanged