2つのコンボボックスがあるとします。1つは下限値用、もう1つは上限値用です。ユーザーは両方の値を選択する必要があります。彼女が快適に過ごせるように、upper-value-comboboxの値を制限することで、エラー(lower> upper)を防ぎたいと思います。
<例>
ここに例があります。(この例では、整数を使用しています。実際の問題にはさまざまなオブジェクトがあります。)
ユーザーは[1..5]の範囲内で選択できます。
lower: [1, 2, 3, 4, 5] --> no lower-value selected upper: [1, 2, 3, 4, 5] --> no upper-value selected
彼女が下限値として3を選択した場合、上限チェックボックスに値[3..5]のみを指定するようにします。これは、上位コンボボックスのデータバインドされたObservableCollection<MyObj>を変更することで正常に機能します。
lower: [1, 2, __3__, 4, 5] --> User has selected '3' upper: [3, 4, 5] --> after that, only values within the range [3..5] are available.
ユーザーは上限値として4を選択します
lower: [1, 2, __3__, 4, 5] --> User has selected '3' upper: [3, __4__, 5] --> User has selected '4'
ユーザーは気が変わって、低い値として2を選択します
lower: [1, __2__, 3, 4, 5] --> User has selected '2' upper: [2, 3, __4__, 5] --> '4' should be kept selected
</ example>
Windowsフォームの世界では、ユーザーコントロールを作成し、イベント処理を自分で制御していました。実際、上位コンボボックスのイベントの処理をオフにし、SelectedIndexChanged
その基になるリストを調整し、適切なインデックスを設定して、イベント処理を再びオンにします。
4番目のステップで奇妙な問題が発生しました。基になるコレクションを変更している間、選択した値を保持する方法が見つかりませんでした。
- このような懸念に対処するためのmvvm-wayは何ですか?または、mvvm-patternは私のシナリオに適した薬ではありませんか?
- これは、イベント処理を完全に制御できるユーザーコントロールに適した場所ですか?
- Expression-Blendは本当にmvvm-patternを使用して構築されていますか?;-)