2

複雑なクエリインターフェイスがあり、RelayCommandを介してモデルに渡す必要があります。これは、いくつかのコンボボックス、チェックボックス、およびテキスト入力で構成されています。

単一のコマンドパラメータ(RelayCommandなど)を簡単に渡すことができますが、RelayCommandなどの場合、コマンドをどのようにカプセル化するのでしょうか。これは少し過剰に思えます。

ヒントをいただければ幸いです

ありがとう

4

1 に答える 1

4

許容できる解決策は、すべてのコンボボックス、チェックボックス、およびテキスト入力をビュー モデルの特定のプロパティにバインドし、データを CommandParameter として渡す代わりに、RelayCommand ハンドラーで props 値を使用することです。

次に例を示します。

あなたの XAML:

<TextBox Text={Binding Arg1} />
<TextBox Text={Binding Arg2} />
<Button Command={Binding Cmd} />

あなたの ViewModel.cs:

public string Arg1 { get; set; }
public string Arg2 { get; set; }
public ICommand Cmd { get; set; }

... 

Cmd = new RelayCommand(OnCmd);

...

// We will not use command parameter at all
private void OnCmd(object o) 
{
    // Some logic that uses a lot of arguments
    Console.WriteLine(Arg1 + Arg2);
}
于 2010-12-09T12:24:26.413 に答える