带有子项的WPF功能区应用程序菜单执行子项和父项回调
我使用的是微软新的WPF ribbon(2010年10月发布),我用带有子项的WPF功能区应用程序菜单执行子项和父项回调,wpf,callback,ribbon,Wpf,Callback,Ribbon,我使用的是微软新的WPF ribbon(2010年10月发布),我用RibbonApplicationSplitMenuItem设计了我的应用程序菜单。如果用户单击RibbonApplicationSplitMenuItem,我想打开程序设置对话框。这些子项包含指向“设置”对话框中各个选项卡页面的直接链接,我希望在选中所选页面的情况下打开“设置”对话框 <ribbon:RibbonApplicationSplitMenuItem Header="Settings" x:Name="
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()
回调,导致设置对话框在关闭后再次显示
VisualStudio的WPF设计器中的属性窗口也拒绝显示回调订阅,除非删除父项的回调或所有子项的回调,所以我想我一定是做错了什么
如何实现所需的行为?在子项“单击事件”中,设置e.Handled=true
以防止事件冒泡回到父项。I通过测量scannerSettingsClicked()结束和settingsClicked()开始之间经过的时间来“解决”这一问题。如果小于500毫秒,我假设是后续呼叫,什么也不做。不太好,但是完成了任务。。。