2013-02-25 82 views
0

我在頁面上實現了「Contact」對象的ObserveableCollection,並將其設置爲longlistselector的itemsource。 「聯繫人」對象的所有屬性均實現INotifyPropertyChanged。一旦添加到ObserveableCollection中,列表和屬性顯示正常。但是,無論何時我更改代碼中的某個屬性,更改都不會反映在UI中,直到我離開頁面並返回。因此,數據綁定屬性不會實時更新。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]); 
      } 
}); 

這裏是我更新的 「人脈」 中的 「亮點」 屬性:

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

好了,我是一個白癡。

激情學會了。永遠不要忘記讓集合中的對象(在我的例子中爲Contact)從INotifyPropertyChanged繼承。我正在實施它,但不是繼承。