我有一个名为myListItem的UserControl进入ListBox'es。鼠标悬停时,它会显示一个弹出窗口,弹出窗口中有一个滚动视图,用户可能希望用它来滚动视图中的文本。我制作了一个事件处理程序,当鼠标进入时会显示弹出窗口,但是当鼠标离开时我会稍微捣乱。如果鼠标离开弹出窗口,弹出窗口应该保持不变,但是当鼠标离开时,弹出窗口应该被禁用。您对如何解决这个问题有什么建议吗?我认为有一种方式看起来像这样:
void MouseLeave(object sender, MouseEventArgs e) {
if(!e.Position.Intersects(itemPopUp.BoundingBox))
itemPopUp.IsOpen = false;
}
干杯
的Nik
答案 0 :(得分: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值(此处为边框控件)。