0

我有一个名为 myListItem 的 UserControl 进入 ListBox'es。在鼠标悬停时,它会显示一个弹出窗口,并且在该弹出窗口中有一个滚动视图,用户可能希望使用它来滚动视图中的文本。我制作了一个事件处理程序,当鼠标进入时显示弹出窗口,但是当鼠标离开时我有点挣扎。如果鼠标离开弹出窗口,则弹出窗口应保持不变,但当鼠标以任何其他方式离开时,应禁用弹出窗口。你对如何解决这个问题有什么建议吗?我认为会有一种看起来像这样的方法:

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 包含相对于您的弹出内容(此处为边框控件)的 X、Y 值。

于 2009-02-24T10:50:14.780 回答