2010-11-23 4 views
0

私はMicrosoftの新しいWPFリボンを使用しています(2010年10月リリース)。RibbonApplicationSplitMenuItemでアプリケーションメニューを設計しました。ユーザーがRibbonApplicationSplitMenuItemをクリックした場合は、プログラム設定ダイアログを開きます。サブアイテムには、設定ダイアログのさまざまなタブページへの直接リンクが含まれており、選択したページを選択して設定ダイアログを開きたいとします。サブアイテムを含むリボンアプリケーションメニューサブアイテムと親コールバックを実行

<ribbon:RibbonApplicationSplitMenuItem 
    Header="Settings" 
    x:Name="SettingsItem" 
    Click="settingsClicked" 
> 
    <ribbon:RibbonApplicationMenuItem 
    Header="Scanner Settings" 
    x:Name="scannerSettingsItem" 
    Click="scannerSettingsClicked" 
    /> 
    <ribbon:RibbonApplicationMenuItem 
    Header="Printer Settings" 
    x:Name="printerSettingsItem" 
    Click="printerSettingsClicked" 
    /> 
</ribbon:RibbonApplicationSplitMenuItem> 

私の問題は、ユーザーが例えばをクリックしたときです。 「スキャナ設定」サブアイテムの場合は、最初にscannerSettingsClicked()コールバックが実行され、次にsettingsClicked()コールバックが発生し、設定ダイアログが閉じられた直後にもう一度表示されます。

Visual StudioのWPFデザイナのプロパティウィンドウでも、親アイテムのコールバックまたはすべてのサブアイテムのいずれかを削除しない限り、コールバックサブスクリプションの表示を拒否します。

希望の動作を達成するにはどうすればよいですか?

+0

scannerSettingsClicked()の終了からsettingsClicked()の開始までの時間を測定することでこれを "解決"しました。 500ミリ秒未満の場合は、フォローアップコールで何もしないと仮定します。大したものではありませんが、仕事は終わってしまいます... – Cygon

答えて

1

サブアイテムのクリックイベントでは、イベントが親アイテムにバブリングしないように、e.Handled = trueを設定します。

+0

ありがとう、それは私の風変わりな回避策よりはるかに優れています! – Cygon