0

)

请看下面的代码:

public class MyClass : INotifyPropertyChanged
{
    private string _myName;

    public string MyName
    {
        get { return _myName; }
        set
        {
            if (_myName != value)
            {
                _myName = value;
                OnPropertyChanged("MyName");
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;


    private void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

此类的对象用作 WPF 表单上 textBox 控件的 DataContext。

想法很简单:对这个对象的 MyName 属性所做的更改应该自动显示在 textBox 中。它有效,但我不明白为什么。

请按照我的思路,指出我哪里错了……

我们为 MyName 设置了一个新值。程序转到“setter”并调用“OnPropertyChanged”。它转到“OnPropertyChanged”并检查“PropertyChanged”是否为空。

事实并非如此。而且我不知道为什么,因为我没有向这个事件添加任何事件处理程序。

那么它是怎样工作的?

谢谢!

4

1 回答 1

1

将对象绑定到 DataContext 时会自动添加事件处理程序。

于 2013-11-01T21:57:23.983 回答