0

ボタン名でパラメーター化された同様のタスクを実行する多くの (40 以上の) ボタンがあり、1 つのコマンドにリンクした WPF インターフェイスがあります。私のコマンド ハンドラーには、40 個のボタンのうちどれがクリックされたかを判断するためのツールがありました。問題は、実行時の条件に基づいて、これらのコマンドの一部を選択的に無効または有効にする方法です。さまざまなコンポーネントに適用され、e.Source ID に基づいて区別される 1 つの CanExecute メソッドが機能しないという懸念があります。

4

2 に答える 2

1

実行ロジックが異なる場合、すべてのボタンを同じコマンドにバインドする理由がわかりません。

すべてのボタン名を含む大きな if else ブロックよりも、コマンドを分けて表示したい

于 2012-11-30T10:47:13.220 に答える
0

テストは、次の方法で構築された CanExecute メソッドを使用してこれを達成できることを示しています。

private void MyCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
    if (e.Source == button1)
        e.CanExecute = checkBox1.IsChecked.HasValue ? checkBox1.IsChecked.Value : false;
    if (e.Source == button2)
        e.CanExecute = checkBox2.IsChecked.HasValue ? checkBox2.IsChecked.Value : false;
    if (e.Source == button3)
        e.CanExecute = checkBox3.IsChecked.HasValue ? checkBox3.IsChecked.Value : false;
}
于 2012-11-30T11:32:06.337 に答える