关于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控件封装的缓冲播放进度条控件 一.目的:模仿播放器播放进度条,支持缓冲任务功能 二.进度: 实现类似播放器中带缓存的播放样式(播放区域.缓冲区域.全部区域等样式) 实现 ...
随机推荐
- Aizu 2309 Sleeping Time DFS
Sleeping Time Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ...
- Codeforces Round #319 (Div. 1) C. Points on Plane 分块
C. Points on Plane Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/576/pro ...
- 【Android】Activity遮罩效果的实现
Activity文件 package com.app.test02; import android.app.Activity; import android.graphics.Color; impor ...
- [React] Higher Order Components (replaces Mixins)
Higher order components will allow you to apply behaviors to multiple React components. So the idea ...
- Html简单demo_html列表中进行编辑操作
html列表中进行编辑操作 <div class="_sort_box" style="float: left;"><?php echo $v ...
- Getting started: A skeleton application
Getting started: A skeleton application In order to build our application, we will start with theZen ...
- Oracle取得中文拼音首字母函数
CREATE ) ; V_RETURN ) ; FUNCTION F_NLSSORT (P_WORD IN VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN NLSS ...
- typedef的使用1——引入
#include <stdio.h> #include <string.h> //#define _CRT_SRCURE_NO_WARNING #pragma warning( ...
- logstash multiline 把文件处理为单个 event
需求 多个文本文件需要存到 ES 中去. 每一个文件存放为一个 doc. 每一个文件都是多行的,行数不定,且没有固定的内容格式. update time: Mon Jun :: CST package ...
- 关于JSP异常的处理
jsp中错误处理页面-isErrorPage="true" 举例说明:mustBeError.jsp <%@ page contentType="text/html ...