INotifyPropertyChanged does not notify UI
本文关键字:UI notify not does INotifyPropertyChanged | 更新日期: 2023-09-27 18:29: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");
}
}
当在CCD_ 2中时,我修改一个元素:
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
的Observable集合
有办法做到这一点吗?
INorifyPropertyChanged与hat无关-您不更改属性,而是重新调整它的空间。
因此,必须观察ObservableCollection中的适当均衡。我可以建议您要么没有可观察到的集合,要么列表绑定设置不正确。属性更改没有任何作用,因为元素上没有任何属性更改。
不知怎的,你的vies没有得到Nodes集合正在抛出的chang事件。绑定错误。
对不起,这是我的错。碰巧在Model中,Children
和Parent
属性没有设置为ObservableCollection
。再次,很抱歉打扰您!:)