关于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并不是自动关闭了,而是跑到其他控件后面去了 
所以你再让它打开,它其实已经是打开的,而且已经在后面,所以看不到了. 
你先让它关闭,再打开,就又跑到前面来了.”

时间: 2024-09-30 06:54:42

关于wpf中popup跟随鼠标移动显示的相关文章

div跟随鼠标悬浮显示

<span style="font-size:18px;"><!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author"

WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书

原文:WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书 最近项目中使用弹出控件Popup,发现弹出框的对齐方式在不同的系统中存在不同(Popup在win10上是弹出在左边,Win7上是弹出在右边).现在记录解决方案于此: 修改弹出菜单相对于相应菜单项是左对齐还是右对齐 // 解决Popup控件在Win7以及Win10等系统中的对齐点方式不一样的问题(以下两种方法均OK) using System.Reflection;    // 方法一 using Sy

关于WPF中Popup中的一些用法的总结

Popup控件是一个常用的非常有用的控件,顾明思义就是弹出式控件,首先我们来看看MSDN对它的解释吧,表示具有内容的弹出窗口,这个是非常重要的控件,我们看看它的继承关系吧: System.Object  System.Windows.Threading.DispatcherObject    System.Windows.DependencyObject      System.Windows.Media.Visual        System.Windows.UIElement       

WPF中 Combox的SelectedValue 不显示的问题

List<int> listYears = new List<int>(); for (int i = 5; i > -5; i--) { listYears.Add(DateTime.Now.Year - i); } cb_Year.ItemsSource = listYears; cb_Year.SelectedValue = DateTime.Now.Year ; /*SelectedValue计算后想显示的值要在源listYears中, 比如如果写成cb_Year.S

WPF中Popup上的textbox无法切换到中文输入法

As Marco Zhou has said in the msdn forum (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/b2428b85-adc9-4a1e-a588-8dbb3b9aac06/):Windows will only send WM_IME_SETCONTEXT message to the active window, Popup by default is designed to be shown

完整的html+css+javascript实现跟随鼠标移动显示选中效果

1,显示效果: 2,html结构 1 <div class="process_list-lpu"> 2 <div class="process_line"></div> 3 <div class="content_list"> 4 <ul> 5 <li><a href="javascipt:;">End customer get product

在WPF中使用AForge.net控制摄像头拍照

原文:在WPF中使用AForge.net控制摄像头拍照 利用AForge.net控制摄像头拍照最方便的方法就是利用PictureBox显示摄像头画面,但在WPF中不能直接使用PictureBox.必须通过<WindowsFormsHost></WindowsFormsHost>来提供交换功能.其解决方法如下: 1.按照常规方法新建一个WPF应用程序: 2.添加引用 WindowsFormsIntegration  (与WinForm交互的支持) System.Windows.For

WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件

在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件.例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开.在这个过程中,控件1只会触发MouseDown事件,而控件2则只会触发MouseUp事件,鼠标不在控件上他们就收不到对应的鼠标事件.同样的如果某个控件注册了MouseMove事件,当鼠标移动到控件外之后,控件将不会接收到MouseMove事件.但是在很多情况下我们需要在鼠标移动到控件外之后还能接收鼠标事件.例如按住

(转)WPF中让窗体不显示最大化,最小化,关闭按钮

1.在WPF中如果不想让窗体显示最大化,最小化,以及关闭按钮的话,可以再窗体的属性面板设置 将ResizeMode=NoResize时,将不会显示最大化最小化,只有关闭按钮:如下图: 将ResizeMode=CanMinimize时,最大化按钮被禁用,但是还是会显示,不能按,最小化,关闭按钮正常显示: 将WindowStyle=None时,将不会显示出最大化,最小化,以及关闭按钮,周围的边框也不存在. 还有一种方式: WPF:窗体不显示或禁用最大化.最小化.关闭按钮.图标以及对话框显示