關於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跟隨鼠標移動顯示