フライアウト パネルを含むユーザー コントロールを作成しています。
ボタンをクリックしてパネルを開くと、ユーザーがフライアウトパネルをクリックして閉じることができるように、マウスをキャプチャしようとしています。
しかし、マウスをキャプチャした直後に、失われた 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();
}
}
}
キャプチャ ロスト イベントに配線すると、フライアウトが開いた直後にヒットします。結果変数を確認すると、マウスのキャプチャ方法に関係なく、結果は true であるため、正しく機能しているように見えます。
何か案は?