我正在使用带有菜单的功能区打开弹出窗口,如下所示:
在我点击显示像pic这样的弹出窗口的按钮之前,会触发一些逻辑(不相关的方式)来更改功能区中的活动选项卡。这有时会导致上一个选项卡的弹出窗口仍然可见,但后面会显示一个新选项卡。当我鼠标输入弹出窗口时,我得到一个StackOverFlowException。
我在考虑“停用”上一个标签左右,是否有人知道我做错了什么?
答案 0 :(得分: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 */ });
}
在我的代码中,我调用此方法,然后将新标签设置为IsSelected = true;
这个实现与我在impl中遇到的略有不同。因为它没有多余的代码。