1

私はmvvmが初めてで、基本的な概念を理解しています。ここで質問があります。2 つの異なるビューモデルがあり、別の wpf GUI に一緒に接続されます。

1 つのビューモデルには、ボタンとチェックボックスがあります。(「左側のコントロール」)「トリック」:他のビューモデルにもチェックボックスがあります。(「右側のコントロール」)

今: ボタンが押された場合、チェックボックスが設定されている場合は、他のビューモデルでもチェックする必要があります。

基本的にはイベントまたは「シグナル」でそれを行いますが、「右側のコントロール」のチェックボックスがチェックされている場合、「左側」の値が必要です。

実装はイベントによって行われます。そうであれば、どのようにパラメーターを渡すことができますか??

私はそのmvvmに慣れていないので、私が本当に探しているものと、どのソリューションが「最先端」および「mvvm」スタイルになるのか正確にはわかりません。

4

3 に答える 3

0

まず、UI の操作が少し複雑に思えます。UI の操作を見直してみる価値はあるかもしれませんが、簡単にできますか? そうでない場合 (つまり、複雑な UI が必要な場合):
左側のビュー モデル (LVM) が右側のビュー モデル (RVM) のプロパティに依存しているように思えます。したがって、ビューモデルのプロパティでその関係を設定することは可能ですか?つまり、LVM を設定して RVM への参照を保持し、チェックボックス自体にバインドされているプロパティが RVM の依存プロパティをチェックすることはできますか? 次に、コマンド (LVM にバインド) は、LVM のプロパティをチェックするだけです。

于 2012-04-28T11:43:12.017 に答える
0

そのようなものには、いくつかの Event Aggregator (たとえばPrism ライブラリから) を使用する必要があります。Prism の Event Aggregator を使用してそれを行う方法の c# 疑似コードの例を次に示します。

RVM で:

_eventAggregator.GetEvent<LeftCBCheckedEvent>()
    .Subscribe(SaveStateOfLeftCBLocally);

...

private void SaveStateOfLeftCBLocally(bool isLeftCBChecked)
{
    _isLeftCBChecked = isLeftCBChecked;
}

LVM で:

public bool IsLeftCBChecked {get; set;}
...
_eventAggregator.GetEvent<LeftCBCheckedEvent>().Publish(IsLeftCBChecked);

イベント定義:

public class LeftCBCheckedEvent : CompositePresentationEvent<bool>{}

そのボタンが押されると、左のチェック ボックスの状態が既にわかります。Prism を確認することを強くお勧めします。これは複合アプリケーション用の優れたライブラリであり、プロジェクトに大きな価値を追加できると思います。

于 2012-04-28T13:16:02.163 に答える