2013-12-24 2 views

ответ

2

Если вы правильно нанесли INotifyPropertyChanged, это автоматически.

0

полу вручную :-)

При реализации «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» с именем измененного свойства. как правило, в инкубаторе этого свойства

+0

Один из них не вытекает из интерфейса. Один реализует интерфейс. Мало, но стоит упомянуть, что C# не поддерживает многократное наследование. – Gusdor

+0

конечно - вы правы, отредактированы. –

+0

Отлично! Полезный совет, если вы оставите строку имени свойства пустым, wpf обновит всю привязку к этому объекту: D – Gusdor

1

Да это Semi вручную,

string _tText; 
    public string Text 
    { 
     get { return _tText; } 
     set 
     { 
      _tText = value; 
      OnPropertyChanged("Text"); 
     } 
    } 

Здесь свойство изменилось шоу вызов после того, как свойство устанавливается с некоторым значением. OnPropertyChanged("Text");

+0

это вызов вашей модели модели представления, а не событие INotifyPropertyChanged. – Gusdor

+0

Этот способ реализации интерфейса может быть рискованным. Если вы не проверите, действительно ли новое и старые значения будут разными, вы можете –

+0

@ORMapper - Как поднятие события закончится бесконечной рекурсией? Можете ли вы подробно остановиться на этом? –

Смежные вопросы