2013-02-25 53 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继承。我正在实施它,但不是继承。