1

次のlinqスニペットがあります

->これはMetroアプリであり、ICollectionViewはグループ化/並べ替えで期待どおりに機能しません。

        ObservableCollection<int> ints = new ObservableCollection<int>();
        ints.Add(3);
        ints.Add(4);
        ints.Add(5);
        ints.Add(6);
        ints.Add(3);
        ints.Add(4);
        ints.Add(1);
        ints.Add(2);


        var groupedInts = ints.GroupBy(i=>i).Select(i=>  new {Key=i.Key, Count=i.Count()});

フォローしたい

  1. それに対応するgroupedIntsまたはObservableCollectionをサブスクライブする(基本的には、WPF / Metro UIからgroupIntsへのデータバインディング)

  2. ints(元のobservablecollection)の変更は、groupedIntsに反映される必要があります(groupInts /関連するObservableCollectionにサブスクライブしているUIが変更を表示できるようにするため)。

実際のシナリオでは、データ構造は少し複雑ですが(6〜7個のプロパティ)、問題は上記の問題に要約されます。

4

3 に答える 3

1

イベントを処理し、そこで同じLINQクエリを使用して変数をints.CollectionChanged更新します...groupedInts

于 2012-05-15T06:48:42.910 に答える
1

私が考えることができる2つの方法があります。

1番目:Bindable Linq /ContinuousLinqを使用する

2番目:groupedInts用に個別のCollectionViewを作成します。元のコレクションが変更されると、これも一緒に変更されます。これは素晴らしくてきちんとしたチュートリアルです

変更されたときにLINQプロパティに通知するというAngelWPFのアイデアも実行可能です。

于 2012-05-15T06:53:52.017 に答える