【发布时间】:2012-04-11 20:25:09
【问题描述】:
嗯,我有以下类定义:
private ObservableCollection<Node> _Nodes;
public ObservableCollection<Node> Nodes
{
get
{
return _Nodes;
}
set
{
_Nodes = value;
OnPropertyChanged("Nodes");
}
}
Node类:
[Serializable]
public class Node : INotifyPropertyChanged
{
private string _Name;
[XmlAttribute("Name")]
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
OnPropertyChanged("Name");
}
}
private bool _IsChecked;
[XmlIgnore()]
public bool IsChecked
{
get
{
return _IsChecked;
}
set
{
_IsChecked = value;
OnPropertyChanged("IsChecked");
}
}
当在ViewModel 中我修改了一个元素:
try
{
foreach (var node in AllNodes)
{
if (node.Children.Contains(s))
{
for (int i = 0; i < node.Children.Count; i++)
{
if (node.Children[i] == s)
{
node.Children[i] = null;
}
}
}
}
}
catch (NullReferenceException)
{
}
UI 碰巧什么也不做。但是再次加载文件可以解决它:)
AllNodes 是 Node 的 ObservablCollection
有没有办法做到这一点?
【问题讨论】:
-
因为你正在修改一个节点的
.Children,我们还需要一些关于这个成员的信息..
标签: c# .net wpf mvvm inotifypropertychanged