关于WPF中Popup控件的小记
在wpf开发中,常需要在鼠标位置处弹出一个“提示框”(在此就以“提示框”代替吧),通过“提示框”进行信息提示或者数据操作,如果仅仅是提示作用,使用ToolTip控件已经足够,但是有些是需要在弹出的框中有操作数据的功能,如弹出框包含一棵树或者列表,此时ToolTip就没法实现了,因为ToolTip只能起到显示的作用,也许有人会有弹出对话框的形式,这是一种办法,但是要让对话框总是显示在鼠标的位置,并且对话框的大小需要根据显示内容的改变(如树或列表的展开与收缩)而动态改变的话,实现起来会比较麻烦。通过进一步的探讨,原来使用Popup控件是那么的简单和实用,它在许多方面和ToolTip 控件一样,也是单一内容,但是它可以包含任何WPF元素,该内容存储在Popup.Child属性中,而不像ToolTip控件存储在ToolTip.Content属性中。另外,和ToolTip控件一样Popup控件也可以延伸出窗口的边界,可以使用IsOpen属性显示或隐藏Popup控件。跟ToolTip相比,Popup会有以下几个比较重要的特点:
(1)ToolTip可以自动显示,而Popup控件永远不会自动显示,为了显示Popup控件必须设置IsOpen属性。
(2)ToolTip可以自动消失,但是Popup有点不同的就是,在默认情况下,Popup.StaysOen属性被设置为True,并且Popup控件会一直显示,直到显式地将IsOpen属性设置为False。如果将Popup.StaysOpen属性设置为False,当用户在其他地方单击鼠标时,Popup控件就会消失。
(3)如果Popup控件的IsOpen属性设置为True时,可以通过Popup控件的PopupAnimation属性设置弹出方式,Placement属性设置弹出位置,如Placement="Mouse",表示在鼠标位置处弹出“提示框”
(4)Popup控件不和任何控件相关联,无论在哪定义Popup标签都可以。
部分XAML代码:
<TextBox Name="my_text" Grid.Row="0" Grid.Column="3" Height="25" Width="140" IsReadOnly="True" HorizontalAlignment="Left" Margin="4,0,0,0" />
<Button Grid.Row="0" Grid.Column="3" Width="20" Height="25" Content="..." HorizontalAlignment="Right" Margin="0,0,10,0" Click="Button_Click" />
<Popup Name="popup" AllowsTransparency="True" FlowDirection="LeftToRight"
PopupAnimation="Fade" Placement="Mouse" StaysOpen="False">
<Border Background="Transparent">
<!--定义边框-->
<StackPanel>
<!--local:ControlCheckPointTree为自定义控件树-->
<local:ControlCheckPointTree x:Name="myTree" IsShowCheck="True" onSelectedItemChanged="ControlCheckPointTree_onSelectedItemChanged" MouseLeave="ControlCheckPointTree_MouseLeave"/>
</StackPanel>
</Border>
</Popup>
后台代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
popup.IsOpen = true;
}
private void ControlCheckPointTree_onSelectedItemChanged(object sender, EventArgs e)
{
my_text.Text = "";
foreach (string str in myTree.SelectedItemNames)
{
my_text.Text += str;
}
}
private void ControlCheckPointTree_MouseLeave(object sender, MouseEventArgs e)
{
popup.IsOpen = false;
}
关于WPF中Popup控件的小记的更多相关文章
- WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书
原文:WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书 最近项目中使用弹出控件Popup,发现弹出框的对齐方式在不同的系统中存在不同(Popup在win10上是 ...
- WPF中Popup控件的使用
一.Popup控件的主要属性 Popup表示具有内容的弹出窗口,其主要属性为: Child:获取或设置 Popup控件的内容. IsOpen:获取或设置一个值,该值指示Popup 是否可见 Place ...
- WPF中Ribbon控件的使用
这篇博客将分享如何在WPF程序中使用Ribbon控件.Ribbon可以很大的提高软件的便捷性. 上面截图使Outlook 2010的界面,在Home标签页中,将所属的Menu都平铺的布局,非常容易的可 ...
- wpf中dropdownButton控件下拉居中。。。
设置模版中popup控件的HorizontalOffset属性来控制居中. 还是对popup控件不熟,折腾了一会.
- WPF中查找控件的扩展类
在wpf中查找控件要用到VisualTreeHelper类,但这个类并没有按照名字查找控件的方法,于是搜索网络,整理出下面这个类,感觉用起来很是方便. 贴出来,供大家参考. /// <summa ...
- WPF中Image控件的Source属性
原文:WPF中Image控件的Source属性 imgBook 是一个Image控件,在后台代码中我想给它指定Source的属性.我先如下方式进行: Uri uri = new Uri(strImag ...
- WPF中PasswordBox控件的Password属性的数据绑定
原文:WPF中PasswordBox控件的Password属性的数据绑定 英文原文:http://www.wpftutorial.net/PasswordBox.html 中文原文:http://bl ...
- 浅谈WPF中对控件的位图特效(WPF Bitmap Effects)
原文:浅谈WPF中对控件的位图特效(WPF Bitmap Effects) -------------------------------------------------------------- ...
- 示例:WPF中Slider控件封装的缓冲播放进度条控件
原文:示例:WPF中Slider控件封装的缓冲播放进度条控件 一.目的:模仿播放器播放进度条,支持缓冲任务功能 二.进度: 实现类似播放器中带缓存的播放样式(播放区域.缓冲区域.全部区域等样式) 实现 ...
随机推荐
- Android 如何添加一种锁屏方式
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- C#利用lambda表达式将函数作为参数或属性跨类传递
在编码时,由于开始是在winform下进行简单的测试开发的,后来代码多了,就想分到不同的类里边去,可是因为原来的测试是在同一个form下的,所以对于函数调用可以很方便,而一旦跨类之后,就会发现,这函数 ...
- ArrowDrawable
https://github.com/wly2014/ArrowDrawable https://github.com/ChrisRenke/DrawerArrowDrawable
- paip.超实用 360浏览器最近频繁奔溃解决流程.
paip.超实用 360浏览器最近频繁奔溃解决流程. 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.n ...
- struts2学习笔记(5)---自己定义拦截器
什么是拦截器? struts2中拦截器分为Struts2定义好的拦截器和自己定义的拦截器. 其作用是在一个Action运行之前进行拦截,在Action运行之后又增加某些操作. 实现原理 当请求一个Ac ...
- ATF批量导出工具
ATF批量导出工具 08 / 31, 2013 批量导出Atf的工具,使用是adobe atf 编码核心 先说一下关于atf的bug 当atf导出时候启用了mips选项会导致:如果纹理问长方形时上传会 ...
- node.js 针对不同的请求路径(url) 做出不同的响应
边看这个边写的: http://wenku.baidu.com/link?url=C4yLe-TVH6060u_x4t34H3Ze8tjoL7HjJaKgH-TvHnEYl-T_gAMYwhmrCeM ...
- 信号之sigpending函数
sigpending函数返回信号集,其中的各个信号对于调用进程是阻塞的而不能递送,因而也一定是当前未决的.该信号集通过set参数返回.(这些信号是已经产生的信号,但因为信号屏蔽字中对其设置了屏蔽位,从 ...
- How-to Dump Keys from Memcache--reference
Submitted by Lars Windolf on 19. October 2012 - 21:53 http://lzone.de/dump%20memcache%20keys You spe ...
- sleep() wait() yield() join()用法与区别
1.sleep()方法 在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”.不推荐使用. sleep()使当前线程进入阻塞状态,在指定时间内不会执行. 2.wait()方法 在其他线程调用 ...