【发布时间】:2015-08-05 08:43:29
【问题描述】:
我们需要显示弹出窗口。在控件外部单击时,它会自动关闭。例如,单击按钮操作触发的任何按钮。需求弹出窗口应该像组合框一样工作。当点击超出范围时,它会关闭下拉菜单,并且任何其他都不会触发。我使用鼠标捕获来做到这一点,并适用于按钮 click 。但是在单击选项卡控件时会发生选择。如何停止鼠标拦截。
谢谢 塞卡
【问题讨论】:
我们需要显示弹出窗口。在控件外部单击时,它会自动关闭。例如,单击按钮操作触发的任何按钮。需求弹出窗口应该像组合框一样工作。当点击超出范围时,它会关闭下拉菜单,并且任何其他都不会触发。我使用鼠标捕获来做到这一点,并适用于按钮 click 。但是在单击选项卡控件时会发生选择。如何停止鼠标拦截。
谢谢 塞卡
【问题讨论】:
要在您单击弹出窗口外部时关闭它,您可以将弹出窗口的StaysOpen 属性设置为false。
至于阻止鼠标点击触发其他控件,也许你可以使用这个技巧:
打开弹出窗口时,将窗口的IsHitTestVisible 属性临时设置为false。并且当它关闭时,将其设置回true,例如:
<Popup x:Name="popup1" StaysOpen="False" Opened="popup1_Opened" Closed="popup1_Closed">
以及背后的代码:
private void popup1_Opened(object sender, EventArgs e)
{
window1.IsHitTestVisible = false;
}
private void popup1_Closed(object sender, EventArgs e)
{
window1.IsHitTestVisible = true;
}
【讨论】: