2016-01-17 4 views
0

У меня есть универсальное приложение Windows 10 с ListView в XAML и ObservableCollection<Contact>, которое привязано к ListView через ItemsSource="{x:Bind Messenger.Contacts}". Теперь я хочу, чтобы ListView обновлял текст свойства конкретной привязки (также через x: Bind) элемента listview, если свойство изменено. My ContactClass реализует INotifyPropertyChanged, является общедоступным, и в каждом устройстве свойств я запускаю NotifyPropertyChanged с именем свойства , правильного.Windows 10 Universal App: PropertyChanged Событие всегда null ListView

public class Contact : INotifyPropertyChanged 
    { 
     public event PropertyChangedEventHandler PropertyChanged; 

     protected string name; 

     public string Name 
     { 
      get 
      { 
       return this.name; 
      } 
      set 
      { 
       this.name= value; 
       NotifyPropertyChanged("Name"); 
      } 
     } 
protected virtual void NotifyPropertyChanged(string propertyName) 
     { 
      PropertyChangedEventHandler handler = this.PropertyChanged; 

      if (handler != null) 
      { 
       handler(this, new PropertyChangedEventArgs(propertyName)); 
      } 
     } 
} 

Но мой ListView никогда не обновляется, и событие PropertyChanged всегда равно null. В других Вопросах я прочитал, что ListView будет автоматически подписаться. Но почему мое событие всегда равно нулю? Как я могу принудительно обновить определенный элемент ListView?

ответ

2

Проблема, скорее всего связанная со значением свойства x: Bind to Text вашего TextBlock. Режим привязки по умолчанию x: Bind - OneTime. Вам нужно изменить его на OneWay, чтобы получить желаемое поведение. Вы можете узнать больше об этом изменении в моем блоге: http://iwindroid.me/binding-and-performance/

+0

Nice! Спасибо, это работает. – user2429841

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