關於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並不是自動關閉了,而是跑到其他控件后面去了 
所以你再讓它打開,它其實已經是打開的,而且已經在后面,所以看不到了. 
你先讓它關閉,再打開,就又跑到前面來了.”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM