私は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デザイナのプロパティウィンドウでも、親アイテムのコールバックまたはすべてのサブアイテムのいずれかを削除しない限り、コールバックサブスクリプションの表示を拒否します。
希望の動作を達成するにはどうすればよいですか?
scannerSettingsClicked()の終了からsettingsClicked()の開始までの時間を測定することでこれを "解決"しました。 500ミリ秒未満の場合は、フォローアップコールで何もしないと仮定します。大したものではありませんが、仕事は終わってしまいます... – Cygon