class Person : INotifyPropertyChanged
{
private string _name;
public string Name
{
get => _name;
set
{
if (_name != value)
{
_name = value;
NotifyPropertyChanged();
}
}
}
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
让我们创建这个类的一个实例并将其绑定到现有的文本框:
var person = new Person { Name = "Bob" };
textBox.DataBindings.Add(
nameof(TextBox.Text), person, nameof(Person.Name), false, DataSourceUpdateMode.OnPropertyChanged);
我的意见 - 不在乎你如何清洁)任何这些方式。
但既然有一个功能,
textBox.Clear();我会使用它。至少——因为记录更短,代码更易读。如果我们遵循对属性
Text1、2、3的调用链,我们将看到以下代码:也就是说
null,无法设置这个属性,它仍然会被分配一个空字符串。因此,该方法textBox.Text = null;不再可用。在方法调用链
Clear4、5之后,我们看到:突然,拨款
null。嗯,为什么不立即分配""? ..通常,使用该方法,因为它存在并且调用它会缩短几个字符。
现代应用程序通常使用数据绑定。我们不直接使用图形控件。它们中的值是间接变化的。
例子很麻烦,但既然我已经解释过了,我就把这件事告一段落。
假设我们有一个类来描述一个有名字的人(自己添加其他属性)。为了让此类的实例参与双向数据绑定,它必须实现INotifyPropertyChanged接口。
让我们创建这个类的一个实例并将其绑定到现有的文本框:
现在,要清除文本框,清除绑定属性就足够了:
如果您创建大型严肃的应用程序,您将不可避免地遇到数据绑定和 INotifyPropertyChanged,因此您必须掌握它们。