当前位置:  开发笔记 > 编程语言 > 正文

INotifyPropertyChanged问题

如何解决《INotifyPropertyChanged问题》经验,为你挑选了1个好方法。

首先,我想说下面的示例过于简单化了.假设你绑定了WPF控件.



    
        
        

Window绑定到Person类,该类实现INotifyPropertyChanged并在表单中具有Name setter

    public string Name 
    {
        get { return _name; }
        set 
        {
            _name = "Some Name";
            OnPropertyChanged("Name");
        }
    }

即只要用户尝试从UI更改它,就会为其分配"某些名称".但这个样本不起作用.我将TextBox中的名称更改为某个值按Tab键,强制焦点移动到Button,TextBox中的值保持不变,尽管触发了PropertyChanged事件.

你能解释一下为什么会这样吗?据我所知,PropertyChanged事件强制UI重新读取属性中的值并显示它们,但在我的示例中,数据绑定文本框中的值不会更新.


再次.我知道这是财产的不良实施,但我想重申,这是过于简单化.这只是一个样本.但无论如何,PropertyChanged表示属性已更改,应该更新,但事实并非如此.



1> Bubblewrap..:

TextBox忽略PropertyChanged事件,因为它是事件的发起者.

一些澄清:

TextBox(或文本框上的绑定)知道它是发起者,因为它在同一个调用中接收PropertyChanged事件.通过执行异步调用,文本框(或绑定)无法知道它是启动器,因此它将处理事件,就像其他人已更新它一样

如果您在UI中添加第二个文本框,则会在编辑第一个文本时看到第二个TextBox发生更改,反之亦然.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有