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集合

有办法做到这一点吗?

INotifyPropertyChanged does not notify UI

INorifyPropertyChanged与hat无关-您不更改属性,而是重新调整它的空间。

因此,必须观察ObservableCollection中的适当均衡。我可以建议您要么没有可观察到的集合,要么列表绑定设置不正确。属性更改没有任何作用,因为元素上没有任何属性更改。

不知怎的,你的vies没有得到Nodes集合正在抛出的chang事件。绑定错误。

对不起,这是我的错。碰巧在Model中,ChildrenParent属性没有设置为ObservableCollection。再次,很抱歉打扰您!:)