WPF中的Popup控件,遇到个问题,将StaysOpen属性设置为"False",按道理应该鼠标点击popup外区域时,其自动关闭。但是现在我发现,如果是键盘事件中打开的话,是正常的,如果是在鼠标事件中打开(譬如把Popup的IsOpen属性绑定到一个ToggleButton的IsChecked属性)则点击Popup外区域的时候,Popup仍然没有反应,无法消失。大家有遇到这种情况的吗?谢谢。
官方上的解释:
当 IsOpen 属性设置为 true 时,Popup 控件显示其内容。 默认情况下,Popup 保持为打开状态,除非 IsOpen 属性设置为 false。 不过,您可以通过将 StaysOpen 属性设置为 false 来更改默认行为。 当您将该属性设置为 false 时,Popup 内容窗口将获得鼠标捕获。 当鼠标事件发生在 Popup 窗口外时,Popup 将失去鼠标捕获并且该窗口将关闭。http://msdn.microsoft.com/zh-cn/library/ms749018.aspx
Popup1.StaysOpen = true; 就不会有问题.