我正在构建一个包含弹出面板的用户控件。
当我单击按钮打开面板时,我试图捕捉鼠标,以便我可以检测用户是否单击了弹出面板,以便我可以关闭它。
但是在我捕获鼠标之后,我得到了一个丢失的鼠标捕获事件,并且我无法检测到面板外的点击。
这是我检测到直接打开关闭点击的地方
private void Grid_MouseUP(object sender, MouseButtonEventArgs e)
{
if (indicatorVM != null)
{
if (indicatorVM.SettingsFlyoutVisibility == Visibility.Collapsed)
{
doRelease = false;
indicatorVM.SettingsFlyoutVisibility = Visibility.Visible;
bool result = this.CaptureMouse();
result = Mouse.Capture(this, CaptureMode.SubTree);
}
else
{
doRelease = true;
indicatorVM.SettingsFlyoutVisibility = Visibility.Collapsed;
this.ReleaseMouseCapture();
}
}
}
如果我连接到捕获丢失事件,它会在弹出窗口打开后立即被击中。当我检查结果变量时,无论我如何捕获鼠标,结果都是正确的,因此它似乎工作正常。
有任何想法吗?