2013-02-25 3 views
0

Я внедрил ObserveableCollection объектов «Контакт» на странице и задал его как источник элементов для longlistselector. Все свойства объектов «Контакты» реализуют INotifyPropertyChanged. Список и свойства отображаются как только они добавляются в ObserveableCollection. Однако, когда я меняю одно из свойств кода, изменение не отражается в пользовательском интерфейсе, пока я не покину страницу и не вернусь. Поэтому свойства базы данных не обновляются в реальном времени.Пользовательский интерфейс Databound не обновляется

Из XAML Страница:

public ObservableCollection<Contact> contacts = new ObservableCollection<Contact>(); 

Contact[] data = ContactHandler.Singleton().GetContacts().Values.OrderBy(x => x.DisplayName.ToLower()[0]).ToArray(); 
     int dataCount = data.Length; 

     this.LayoutRoot.Dispatcher.BeginInvoke(() => 
     { 
      for (int x = 0; x < data.Length; x++) 
      { 
       contacts.Add(data[x]); 
      } 
}); 

Вот где я обновить свойство "Highlight" из "контактов":

private void contactList_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     Contact contact = contactList.SelectedItem as Contact; 

     if (contact != null) 
     { 
      Debug.WriteLine(contact.DisplayName + " is: " + contact.Highlight); 

      string uid = contact.UserID; 
      if (uids.Contains(uid)) 
      { 
       uids.Remove(uid); 
       Deployment.Current.Dispatcher.BeginInvoke(() => 
       { 
        contact.Highlight = Visibility.Collapsed; 
       }); 
      } 
      else 
      { 
       uids.Add(uid); 
       Deployment.Current.Dispatcher.BeginInvoke(() => 
       { 
        contact.Highlight = Visibility.Visible; 
       }); 
      } 

}

ответ

0

Хорошо, так что я являюсь идиот.

Lession learn. Никогда не забывайте, чтобы ваш объект в коллекции (в моем случае Contact) наследовал от INotifyPropertyChanged. Я реализовал его, но не наследовал.

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