C# INotifyPropertyChanged不会通知用户界面
我有以下的类定义:C# INotifyPropertyChanged不会通知用户界面,c#,.net,wpf,mvvm,inotifypropertychanged,C#,.net,Wpf,Mvvm,Inotifypropertychanged,我有以下的类定义: private ObservableCollection<Node> _Nodes; public ObservableCollection<Node> Nodes { get { return _Nodes; } set { _Nodes = value; OnProperty
private ObservableCollection<Node> _Nodes;
public ObservableCollection<Node> Nodes
{
get
{
return _Nodes;
}
set
{
_Nodes = value;
OnPropertyChanged("Nodes");
}
}
在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)
{
}
试试看
{
foreach(所有节点中的var节点)
{
if(node.Children.Contains)
{
for(int i=0;i
UI碰巧什么也不做。但再次加载文件可以解决此问题:)
AllNodes是节点
有什么方法可以做到这一点吗?INorifyPropertyChanged与hat无关-您不需要更改属性,只需要重新调整其速度 因此,必须观察可观测收集中的适当均衡。我建议您要么没有可观察的集合,要么列表绑定未正确设置。属性更改与此无关,因为元素上没有任何属性更改
不知何故,您的VIE没有得到Nodes集合抛出的chang事件。装订不好。嗯,对不起,是我的错。在模型中,
子项
和父项
属性未设置为可观察集合
。再次抱歉打扰您:) 由于您正在修改节点的.Children
,因此我们还需要有关此成员的一些信息。。
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)
{
}