0

ユーザーに表示し、ユーザーが選択できるようにする必要があるデータのツリー型グラフがあります。簡単にするために、通りのリストがあり、それぞれに家のリストが含まれ、それぞれに住んでいる人のリストがあるとしましょう。このようなもの:

interface IStreet {
    string Name {get;}
    IReadOnlyCollection<IHouse> Houses {get;}
}

interface IHouse {
    int StreetNumber {get;}
    IReadOnlyCollection<IPerson> People {get;}
}

interface IPerson {
    string Name {get;}
}

ユーザーが2人の異なる人を選択することになっているWPFのフォームがありますが、両方とも同じ通りに住んでいる必要があります。このようなもの:

+------------------------------------------------+
|  Street:                                       |
|  +------------------------------------------+  |
|  | Pick street                            ▾ |  |
|  +------------------------------------------+  |
|                                                |
|  + - Person 1 (Group box) - - - - - - - - - +  |
|  |  House:                                  |  |
|  |  +------------------------------------+  |  |
|  |  | Pick house                       ▾ |  |  |
|  |  +------------------------------------+  |  |
|  |                                          |  |
|  |  Person:                                 |  |
|  |  +------------------------------------+  |  |
|  |  | Pick peron                       ▾ |  |  |
|  |  +------------------------------------+  |  |
|  + - - - - - - - - - - - - - - - - - - - - -+  |
|                                                |
|  + - Person 2 (Group box) - - - - - - - - - +  |
|  |  House:                                  |  |
|  |  +------------------------------------+  |  |
|  |  | Pick house                       ▾ |  |  |
|  |  +------------------------------------+  |  |
|  |                                          |  |
|  |  Person:                                 |  |
|  |  +------------------------------------+  |  |
|  |  | Pick peron                       ▾ |  |  |
|  |  +------------------------------------+  |  |
|  + - - - - - - - - - - - - - - - - - - - - -+  |
+------------------------------------------------+

「Pick street」の ComboBoxIsSynchronizedWithCurrentItemを true に設定し、2 つのグループ ボックスを にバインドすることから始めましDataContext{Binding Path=Streets/}DataContextグループボックスの を設定することで個別のコンテキストが作成されるので、House-ComboBox をバインド{Binding Path=Houses}して現在のアイテムと同期するように設定すると、それぞれ独自の「現在のアイテム」が維持されることを願っていましたが、これは起こりませんでした。だから今、私が誰かの家を選ぶと、他の人も変わります. 私の質問は、このセットアップをバインドで機能させるエレガントな方法はありますか、それともコンボボックスを手動で設定する方法に戻る必要がありますOnChangeか?

4

1 に答える 1

1

通りの人にデフォルトのCollectionViewSourceを使用しています(私は常にこれらをカーソルと考えています)。

2 つのカーソルを持つには、2つの CollectionViewSourcesが必要です。

これらをコードまたは Xaml で作成し、グループ ボックスを 2 つの CollectionViewSources にバインドできます。

于 2013-07-10T08:46:38.050 に答える