2009-08-04 6 views
1

複数のコマンドをボタンにバインドすることは可能ですか?複数のコマンドバインド

私は自分のメインアプリケーション(親アプリケーション)で呼び出しているユーザーコントロールを持っています。

コントロール(ユーザーコントロールとメインウィンドウ)の両方でclickコマンドを処理する必要があります。しかし、私は1つしか得ることができません。

私はこれを得ることができる方法はありますか?

本当にありがとうございます。

コードスニペット:

public class MainWindowFooterCommands 
{ 
    public static readonly RoutedUICommand FooterClickLocalCommand = new RoutedUICommand("Local Button Command", "FooterClickLocalCommand", typeof(MainWindowFooterCommands)); 
} 

private void MainWindowFooterBindCommands() 
{ 
    CommandBinding cmdBindingBXClick = new CommandBinding(MainWindowFooterCommands.FooterClickLocalCommand); 
     cmdBindingBXClick.Executed += ClickCommandHandler; 
     CommandBindings.Add(cmdBindingBXClick); 
} 


void ClickCommandHandler(object sender, ExecutedRoutedEventArgs e) 
{ 
    //Do Something 
} 


//Parent Control holding an instance of the footer control. 
class MainWindow { 

    public MainWindow() 
    { 
     CommandBinding cmdBindingBXClick1 = new CommandBinding(MainWindowFooterCommands.BXClickMainWindowCommand); 
     cmdBindingBXClick1.Executed += LoadParent; 
     CommandBindings.Add(cmdBindingBXClick1); 
    } 

     public void LoadParent(object sender, ExecutedRoutedEventArgs e) 
     { 
     LoadParentWindow(); 
     } 
} 

よろしく、 Tushar

答えて

5

複数のコマンドを集約しようとしている可能性がありますが、これは自然なやり方です。ジョシュ・スミスは、「コマンドグループ」と呼ばれる彼の実装に非常に良い記事があり、そうでなければhttps://msdn.microsoft.com/en-us/library/ff921126.aspx

あなたはプリズムを使用している場合は、このために組み込みクラスがCompositeCommandが(少し下にスクロール)と呼ばれています:http://www.codeproject.com/KB/WPF/commandgroup.aspx

このようにロールアップできるシナリオがいくつかあります(「すべて保存」など)。あなたの鞄のための良いツールです。

0

私の知る限りWPFは、さまざまなレベルで複数のcommandbindingsをサポートするために、ボックスの外に何かを提供するdoesntのが、あなたは次のことを試みることができる:

void ClickCommandHandler(object sender, ExecutedRoutedEventArgs e) 
{ 
    IInputElement parent = (IInputElement) LogicalTreeHelper.GetParent((DependencyObject)sender); 
    MainWindowFooterCommands.BXClickMainWindowCommand.Execute(e.Parameter, parent); 
} 

あなたの親が本当にIInputElementかどうかをテストする必要があるかもしれません。

関連する問題