2011-08-02 14 views
1

私はサブメニューでコードのコンテキストメニューを作成しています。トップレベルのメニュー項目を押したときにコマンドとして機能させたいのですが、子メニュー項目を追加すると、コマンドの動作が拡張動作に引き継がれているようです。どのように私はこれを改善することができますか?'親' ContextMenuのコマンド

MenuItem item = new MenuItem(); 
item.Command = DoSomething; 
item.Header = "Parent"; 

MenuItem subItem = new MenuItem(); 
subItem.Command = DoSomethingElse; 
subItem.Header = "Child"; 

item.Items.Add(subItem); 
ContextMenuItems.Add(item); 
<Button> 
    <Button.ContextMenu> 
     <ContextMenu ItemsSource="{Binding ContextMenuItems}" /> 
    </Button.ContextMenu> 
</Button> 

<CommandBinding Command="{x:Static DoSomething}" 
       Executed="DoSomethingExecuted"/> 

<CommandBinding Command="{x:Static DoSomethingElse}" 
       Executed="DoSomethingElseExecuted"/> 

答えて

4

私はあなたが今まで、これを行うべきではありません

を押したときに、トップレベルのメニュー項目がコマンドとして機能します。

それはガイドライン、一貫性およびユーザexpectanciesの問題です)

+0

は、合意された - これは動作しません。 –

+0

私は彼がスプリットボタンのようなものを望んでいると思う。 – SLaks

+0

@SLaks:ビジュアル表現は、これが実際にはメニューではなくボタンであることを伝えるのとは違います。 –

関連する問題