2010-11-23 44 views
0

我正在使用Microsoft的新WPF功能區(2010年10月發行版),並使用RibbonApplicationSplitMenuItem設計了我的應用程序菜單。如果用戶點擊RibbonApplicationSplitMenuItem,我想打開程序設置對話框。子項目包含直接鏈接到設置對話框中的各個標籤頁面,我想打開設置對話框並選擇所選擇的頁面。帶有子項目的WPF Ribbon應用程序菜單執行子項目和父項回調

<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 2010-12-01 10:25:13

回答

1

在您的子項目單擊事件中,設置e.Handled = true以防止事件冒泡回父項目。

+0

謝謝,這比我的古怪解決方法要好得多! – Cygon 2010-12-03 20:25:21