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されたときにそれ自体を更新しません。CollectionChangedUI コントロールをイベントにサブスクライブさせるには、さらにインターフェイスを実装する必要があるのではないでしょうか?

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 に答える