0

我在页面上实现了“联系人”对象的 ObserveableCollection,并将其设置为 longlistselector 的 itemsource。“联系人”对象的所有属性都实现了 INotifyPropertyChanged。将列表和属性添加到 ObserveableCollection 后,它们会正常显示。但是,每当我更改代码中的一个属性时,更改不会反映在 UI 中,直到我离开页面并返回。因此,数据绑定属性不会实时更新。

从 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;
                });
            }

}

4

1 回答 1

0

好吧,所以我是个白痴。

吸取教训。永远不要忘记让集合中的对象(在我的情况下为联系人)继承自 INotifyPropertyChanged。我正在实施它,但没有继承。

于 2013-02-25T22:06:11.247 回答