0

我有一些实现 INotifyCollectionChanged 的​​集合。

public sealed class GroupCollection : INotifyCollectionChanged, IList<Group>
{
    //...
    public event NotifyCollectionChangedEventHandler CollectionChanged;

    private void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    {
        if (CollectionChanged != null)
        {
            CollectionChanged(this, e);
        }
    }
    //...
}

它用于 xaml

        <CollectionViewSource x:Name="groupedItemsViewSource" Source="{Binding Groups}"/>

然后在 xaml.cs

        this.DefaultViewModel["Groups"] = groups.GroupCollection;

收藏品显示得很好。但是 UI 在被触发时不订阅CollectionChanged也不更新自身。CollectionChanged也许我需要实现更多的接口来让 UI 控件订阅事件?

PS 我不能使用 ObservableCollection 因为编译器说这“不是 Windows 运行时接口”。

4

1 回答 1

0

使用默认 Grid 应用程序模板时,以下使用ObservableCollection对我来说很好:

using System.Collections.ObjectModel;
...
class MyOC : ObservableCollection<SampleDataGroup> { };
...
var oc = new MyOC();
string id = "title1";
oc.Add(new SampleDataGroup(id, id, id, "", id));
id = "title2";
oc.Add(new SampleDataGroup(id, id, id, "", id));
this.DefaultViewModel["Groups"] = oc;

我猜你可以在你的项目中做类似的事情:

using System.Collections.ObjectModel;
...
public sealed class GroupCollection : ObservableCollection<Group>
{
...
于 2013-03-06T15:49:57.097 回答