Создает ли WPF-фрейм обновления с INotifyPropertyChanged
производных типов на Bindings
в пользовательском интерфейсе?WPF автоматически обновляется с INotifyPropertyChanged?
Или мне нужно сделать это вручную?
Создает ли WPF-фрейм обновления с INotifyPropertyChanged
производных типов на Bindings
в пользовательском интерфейсе?WPF автоматически обновляется с INotifyPropertyChanged?
Или мне нужно сделать это вручную?
Если вы правильно нанесли INotifyPropertyChanged
, это автоматически.
полу вручную :-)
При реализации «INotifyPropertyChanged» вы будете применять эти методы (которые, как правило, реализованы те же)
#region INotifyPropertyChanged
protected void RaisePropertyChanged(string propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null) { PropertyChanged(this, e); }
}
public event PropertyChangedEventHandler PropertyChanged;
#endregion
После этого, когда один из ваших свойств изменилось , вам нужно вызвать «RaisePropertyChanged» с именем измененного свойства. как правило, в инкубаторе этого свойства
Да это Semi вручную,
string _tText;
public string Text
{
get { return _tText; }
set
{
_tText = value;
OnPropertyChanged("Text");
}
}
Здесь свойство изменилось шоу вызов после того, как свойство устанавливается с некоторым значением. OnPropertyChanged("Text");
это вызов вашей модели модели представления, а не событие INotifyPropertyChanged. – Gusdor
Этот способ реализации интерфейса может быть рискованным. Если вы не проверите, действительно ли новое и старые значения будут разными, вы можете –
@ORMapper - Как поднятие события закончится бесконечной рекурсией? Можете ли вы подробно остановиться на этом? –
Один из них не вытекает из интерфейса. Один реализует интерфейс. Мало, но стоит упомянуть, что C# не поддерживает многократное наследование. – Gusdor
конечно - вы правы, отредактированы. –
Отлично! Полезный совет, если вы оставите строку имени свойства пустым, wpf обновит всю привязку к этому объекту: D – Gusdor