Практическое руководство. Реализация уведомления об изменении свойства
Для поддержки OneWay или TwoWay привязки для включения свойства целевого объекта привязки автоматическое отражение динамических изменений источника привязки (например, область просмотра обновляется автоматически, когда пользователь редактирует форму), класс необходимо предоставлять уведомления соответствующие изменения свойства. В этом примере показано, как создать класс, реализующий INotifyPropertyChanged.
Пример
Для реализации INotifyPropertyChanged необходимо объявить PropertyChanged событий и создайте OnPropertyChanged
метод. Затем для каждого свойства, которому потребуются уведомления об изменениях, вы вызываете OnPropertyChanged
при каждом обновлении свойства.
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace SDKSample
{
// This class implements INotifyPropertyChanged
// to support one-way and two-way bindings
// (such that the UI element updates when the source
// has been changed dynamically)
public class Person : INotifyPropertyChanged
{
private string name;
// Declare the event
public event PropertyChangedEventHandler PropertyChanged;
public Person()
{
}
public Person(string value)
{
this.name = value;
}
public string PersonName
{
get { return name; }
set
{
name = value;
// Call OnPropertyChanged whenever the property is updated
OnPropertyChanged();
}
}
// Create the OnPropertyChanged method to raise the event
// The calling member's name will be used as the parameter.
protected void OnPropertyChanged([CallerMemberName] string name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
}
Пример того, как Person
класс может использоваться для поддержки TwoWay привязки, см. в разделе Управление обновлением источника текст в текстовом поле.