0

ListBox に入る myListItem という UserControl があります。マウスオーバーすると、ポップアップ ウィンドウが表示され、そのポップアップには、ユーザーがビュー内のテキストをスクロールするために使用できるスクロール ビューがあります。マウスが入ったときにポップアップを表示するイベント ハンドラを作成しましたが、マウスが離れたときに少し苦労しています。マウスがポップアップから離れた場合、ポップアップは表示されたままになりますが、マウスが別の方法で離れた場合、ポップアップは無効になります。これを解決する方法について何か提案はありますか? 次のような方法があると思います。

void MouseLeave(object sender, MouseEventArgs e) {
  if(!e.Position.Intersects(itemPopUp.BoundingBox))
    itemPopUp.IsOpen = false;
}

乾杯

ニック

4

1 に答える 1

1

次の Popup XAML コードがあるとします。

<Popup x:Name="MyPopup">
    <Border Width="200" Height="200" BorderThickness="1" BorderBrush="Black" Background="Pink"
            MouseLeave="Border_MouseLeave" MouseMove="Border_MouseMove" >

    </Border>
</Popup>
<TextBlock x:Name="MouseLeaveLoc" Text="N/A" />

これはコードビハインド (C#) で:

private void Border_MouseLeave(object sender, MouseEventArgs e)
{
    MouseLeaveLoc.Text = mouseLoc.ToString();
}

private Point mouseLoc;
private void Border_MouseMove(object sender, MouseEventArgs e)
{
    mouseLoc = e.GetPosition(MyPopup);
    mouseLoc.X -= MyPopup.HorizontalOffset;
    mouseLoc.Y -= MyPopup.VerticalOffset;
}

mouseLoc には、ポップアップ コンテンツ (ここでは Border コントロール) に対する X、Y 値が含まれます。

于 2009-02-24T10:50:14.780 に答える