2009-02-24 13 views
0

我有一个名为myListItem的UserControl进入列表框。在鼠标悬停时,它会显示一个弹出窗口,并且在弹出窗口中会出现一个滚动视图,用户可能想要使用该视图来滚动视图中的文本。我制作了一个事件处理程序,它在鼠标进入时显示弹出窗口,但是当鼠标离开时我有点困难。如果鼠标离开弹出窗口,弹出窗口应保持不变,但当鼠标离开时,应禁用弹出窗口。你有什么建议如何解决这个问题?我认为会有一个方法看起来有点像这样:测试其中MouseLeave()离开

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

干杯

回答

1

假设你有这个弹出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值(此处为边框控件)。

+0

嗨,谢谢你的回答。 :-)我没有想过要在MouseMove()中做减法。如果我理解正确,你建议我自己做计算,而不是使用内建函数? – 2009-02-24 14:51:56