关于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控件封装的缓冲播放进度条控件 一.目的:模仿播放器播放进度条,支持缓冲任务功能 二.进度: 实现类似播放器中带缓存的播放样式(播放区域.缓冲区域.全部区域等样式) 实现 ...
随机推荐
- Codeforces Codeforces Round #319 (Div. 2) C. Vasya and Petya's Game 数学
C. Vasya and Petya's Game Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/ ...
- C++ typedef typename
[cpp] view plaincopy template<typename T> class A { public: typedef T a_type; }; template<t ...
- [JavaScript]'this'详解
http://blog.csdn.net/sodino/article/details/51318565
- 读取XML帮助类
using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; us ...
- Lucene全文检索系列(一)
1. Lucene简介 Lucene是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎.Lucene以其方便使用.快速实施以及灵活性受到广泛的关注.它可以方便地嵌入到各种应用中实现针对应用的全文 ...
- 转:Oracle R12 多组织访问的控制 - MOAC(Multi-Org Access Control)
什么是MOAC MOAC(Multi-Org Access Control)为多组织访问控制,是Oracle EBS R12的重要新功能,它可以实现在一个Responsibility下对多个Opera ...
- [置顶] c++类的继承(inheritance)
在C++中,所谓"继承"就是在一个已存在的类的基础上建立一个新的类.已存在的类(例如"马")称为"基类(base class )"或&quo ...
- 关于Eclipse中的egit的常规使用和模板
修改bug的模板 要提交的comment信息.TDI-31426 fix bug: if get studio license use : Import License :after get lice ...
- 【Codeforces Round#279 Div.2】B. Queue
这题看别人的.就是那么诚实.http://www.cnblogs.com/zhyfzy/p/4117481.html B. Queue During the lunch break all n Ber ...
- 简单的ROT13码编码与解码
ROT13码意思是将字母左移13位.如'A' ↔ 'N', 'B' ↔ 'O','V' ↔ 'I'. 下面实现ROT13码的解码. function rot13(str) { var arr = [] ...