標籤:move 看到了 open 開啟 圖片 點擊 限制 技術 div
原文:關於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跟隨滑鼠移動顯示