2009-02-24 34 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