2015-09-01 61 views
1

我在與打開一個彈出,像這樣的菜單功能區:微軟WPF絲帶彈出不垮

enter image description here

之前,我點擊,顯示像PIC的彈出按鈕,一些邏輯被觸發(無關)如何改變功能區中的活動選項卡。這可能偶爾會導致前一個選項卡中的彈出窗口仍然可見,但在其後面可以看到新的選項卡。當我mouseEnter彈出,我得到一個StackOverFlowException。

我在想「關閉」前面的標籤左右,有人知道我做錯了什麼嗎?

回答

0

我添加了以下內容以實現我想要的效果:) 此解決方案是特定於實現的(即基於我對我們使用的功能區的實現情況的調查)。該實現需要一個不同的originalSource,我通過將Source設置爲RibbonWindow實例來實現。

private void DismissRibbonPopup() 
{ 
    // Hack inspired by RibbonHelper; try to close any open RibbonPopups (implicit "from the current ActiveTab"). 
    UIElement source = Mouse.Captured as UIElement; 
    if (source != null) 
    source.RaiseEvent(new RibbonDismissPopupEventArgs() { Source = /** I put the RibbonWindow instance here */ }); 
} 

在我的代碼調用此方法之後,我稍微從我在IMPL碰到設置新的選項卡IsSelected = true; 此實現不同。因爲它有少許多餘的代碼。