私はフライアウトパネルを含むユーザーコントロールを構築しています。wpf mousecaptureがすぐに解放される
ボタンをクリックしてパネルを開くと、ユーザーがフライアウトパネルをクリックして閉じることができるかどうかを検出できるようにマウスをキャプチャしようとしています。
私はマウスを捕まえた直後に、マウスの失神イベントが発生し、パネル外のクリックを検出できません。私は
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();
}
}
}
ストレートオープンクローズクリックを検出するのはここ
がある、キャプチャに私のワイヤーがイベントを失った場合は、フライアウトが開いた後、それはすぐにヒットです。マウスをどのようにキャプチャするかにかかわらず結果変数をチェックすると、結果は真であるため、正しく動作しているように見えます。
アイデア?
BeginInvokeでマウスキャプチャを延期すると私にとってうまくいった。 –