Mouseoverのボタンのすぐ隣にポップアップが表示されます。私は、マウスがボタンからポップアップまで越えると、ポップアップを開いたままにしておく必要があります。私はまた、ボタンがボタンまたはポップアップのいずれかを離れるときに閉じるためにポップアップが必要です。それはthisポストに似ていますので、私を許してください。しかし、実際の解決策はありませんでした。ボタンと新しいポップアップを含むようにマウス領域を拡張する
本質的には、ボタンとポップアップを含むようにマウスの領域を拡張して、マウスが両方を移動でき、マウスがそのいずれかを離れる場合はマウスが離れることができます。
<Popup x:Key="CustomPopup" x:Name="samplePopup" Margin="0" AllowsTransparency="False" StaysOpen="True">
<Border BorderThickness="1" BorderBrush="Black" Background="AntiqueWhite">
<WebBrowser x:Name="PopBrowser" local:WebBrowserUtility.Body="{Binding Path=Value}" Height="400" Width="500"/>
</Border>
</Popup>
の背後にあるコードにしようと、私は(私はオフセットなしているにもかかわらず)マウスがポップアップするボタンから取得できるようにするためにタイマーを追加し、ポップアップを超える場合はオープン、それを維持するためにIfステートメントを追加しました。
Popup popUp { get; set; }
private void ButtonMouseEnter(object sender, MouseEventArgs e)
{
Button currentButton = sender as Button;
popUp = (Popup)FindResource("CustomPopup");
DelayedExecutionService.DelayedExecute(() =>
{
if (currentButton.IsMouseOver)
{
popUp.PlacementTarget = currentButton;
popUp.Placement = PlacementMode.Right;
popUp.HorizontalOffset = -5;
popUp.StaysOpen = true;
popUp.IsOpen = true;
}
});
}
private void MouseLeave(object sender, MouseEventArgs e)
{
DelayedExecutionService.DelayedExecute(() =>
{
if (popUp.IsMouseDirectlyOver)
{
popUp.IsOpen = true;
MessageBox.Show("over popup"); //Not recognizing this.
}
else
popUp.IsOpen = false;
MessageBox.Show("not over popup"); //I get this even if mouse is over popup.
});
}
このGIFはボタンのみの私のグリッドと非常に不便であるポップアップのためのMouseLeaveを示しています
Buttonの 'MouseEnter'イベントとコードのハンドルを使用します。 – AnjumSKhan
ありがとうAnjum。私は私がもっと近づいたと思う(上記の私のコードを更新した)が、私はそれがコードから動作するように思える...私は同じMouseLeaveイベントで両方のコントロールのマウスの位置を確認することができる必要があります。ボタンのmouseLeaveイベントからpopUp.IsMouseDirectlyOverをチェックできない理由は何ですか? – ctalley5
何をしていないのか。これは簡単なことです。 – AnjumSKhan