1. 程式人生 > >關於wpf中popup跟隨鼠標移動顯示

關於wpf中popup跟隨鼠標移動顯示

left com position width sem span cnblogs 復制代碼 right

原文:關於wpf中popup跟隨鼠標移動顯示

最近在做一個畫圖工具,裏面有一個功能是需要實現,當鼠標移動的時候在,鼠標的旁邊顯示坐標信息。

第一反應是想到了tooltip,但是tooltip有許多的限制,查詢資料的過程中看到了popup,popup比tooltip更加靈活,下面講講tooltip跟popup的區別:

1.tooltip會自動顯示,自動隱藏,而popup則需要設置IsOpen屬性,並且在Popup.StaysOen屬性為true時,Popup控件會一直顯示,直到顯式地將IsOpen屬性設置為False。當Popup.StaysOen屬性為false時,當用戶在其他地方單擊鼠標時,Popup控件就會消失。

2.如果Popup控件的IsOpen屬性設置為True時,可以通過Popup控件的PopupAnimation屬性設置彈出方式,Placement屬性設置彈出位置,如Placement="Mouse",表示在鼠標位置處彈出“提示框”。

3.Popup控件不和任何控件相關聯,無論在哪定義Popup標簽都可以。

下面的例子能實現鼠標在移動的時候,popup跟隨鼠標移動,並顯示坐標信息。

popup部分代碼:

1 <Popup Name="pop1" StaysOpen="True" AllowsTransparency="True" FlowDirection="LeftToRight" 
2                PopupAnimation="Fade" Placement="Mouse">
3             <TextBlock Name="txt" Text=""  Width="90" Height="30"></TextBlock>
4 </Popup>

代碼解釋:StaysOpen="True"才能使Popup一直顯示。若StaysOpen="False",那麽Popup會在上一次的坐標點不動,需要單擊鼠標左鍵才會切換

到當前坐標點。

後臺代碼:

技術分享圖片
1  private void touchPad_MouseMove(object sender, MouseEventArgs e)
2 {
3    pop1.IsOpen = false;
4    pop1.IsOpen = true;
5    point = e.GetPosition(inkCanv2); 
6    txt.Text = ("x:" + point.X.ToString() + " y:" +   point.Y.ToString());//顯示鼠標當前坐標點
7 }
技術分享圖片

說明:為何要先IsOpen = false再IsOpen = false,下邊有解釋。http://bbs.csdn.net/topics/390770640

摘錄一下大神的原話:

“在其他地方點擊之後,pop1並不是自動關閉了,而是跑到其他控件後面去了
所以你再讓它打開,它其實已經是打開的,而且已經在後面,所以看不到了.
你先讓它關閉,再打開,就又跑到前面來了.”

http://www.cnblogs.com/TomZeng/p/6698450.html

關於wpf中popup跟隨鼠標移動顯示