WPF中的弹出窗口立即失去焦点并关闭

时间:2009-12-07 16:52:12

标签: c# wpf contextmenu lost-focus

我一直在反对WPF Popup问题,我希望有人可以帮助我:) 大纲如下:

我们的应用程序存储了一个UIObject列表 - 这些元素表示在视口3d中显示的元素(通过成员UIRenderObject,它只是一个平面,方形网格上有位图)和树视图(通过成员TreeViewItem )。

在任何一种情况下,当对象检测到右键单击时,它会尝试打开弹出窗口。 这个代码就像你可以得到的那样直截了当:

ContextMenu contextMenu = new ContextMenu();

//add content

contextMenu.IsOpen = true;

当我在视口中单击时,一切都按预期工作 - 弹出窗口打开,并保持打开状态,直到它失去焦点或进行选择。 但是,在树视图中,弹出窗口会失去焦点并立即关闭。

我已经尝试明确设置焦点,显式设置PlacementTarget,将鼠标事件标记为在打开弹出窗口的调用之前和之后处理,将弹出窗口标记为“StaysOpen”和其他十几个东西,仍然它会立即关闭。

任何帮助将不胜感激。提前谢谢!

2 个答案:

答案 0 :(得分:0)

叹了口气,事实证明我过于复杂了。 而不是自己管理上下文菜单,只需将其分配给TreeViewItem自己的ContextMenu并让系统处理它,就可以了。 那会学到我的。 感谢大家的投入:)

答案 1 :(得分:-1)

这是ContextMenu的默认行为。或者,您可以使用Popup Class而不是ContextMenu。然后您可以根据您的要求进行扩展。