1

可能重复:
为什么绑定更新而不实现 INotifyPropertyChanged?

我有 WPF:

    <TextBlock Grid.Row="0" Text="{Binding SomeProperty}" />
    <TextBox Grid.Row="1" Text="{Binding SomeProperty, UpdateSourceTrigger=PropertyChanged}" />

势必

MyModel1 类
{
    字符串_someProperty = string.Empty;
    公共字符串 SomeProperty
    {
        得到 { 返回 _someProperty; }
        设置 { _someProperty = 值;}
    }
}

它也适用于:

    类 MyModel
        {
            公共字符串 SomeProperty { 获取;放; }
        }

如您所见,没有属性更改通知,但在我输入 TextBox 时,TextBlock 已更新。我正在使用 Visual C# express 2010、标准 WPF 应用程序项目模板、标准控件、无代码片段、没有任何附加内容,以及 .NET 4 客户端配置文件。

  • 问题1:它为什么有效?
  • 问题 2:这是 .NET 4 的新功能吗?
  • 问题 3:如何在不在模型中实现任何事件的情况下从代码中获取有关属性更改的通知?

谢谢你

4

1 回答 1

0

1 如果可行,WPF 的数据绑定引擎将数据绑定到PropertyDescriptor实例,如果源对象是普通 CLR 对象并且不实现 INotifyPropertyChanged 接口,则该实例包装源属性。

PropertyDescriptor.AddValueChanged()方法允许订阅通知。

更改未按需要同步,我们使用INotifyPropertyChanged以自定义此方面。

2 你可以阅读这篇文章,这很有趣

链接:http: //msdn.microsoft.com/en-us/library/bb613588.aspx

于 2012-09-08T12:38:48.590 回答