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

Popup控件是从FrameworkElement直接继承而来的,属于非常高的层级,我们在使用中使用的最多的属性就是下面这些属性:1 PlacementTarget 表示Popup控件的放置的位置依赖的对象,这个通常使用绑定的方式来标明Popup控件停靠的目标。比如说:PlacementTarget="{Binding ElementName=PCheckBox}"  表示Popup停靠的位置依赖于一个名为PCheckBox的ChenkBox对象,这个也是经常使用的一种情况,我们可以将Popup控件和CheckBox,ToggleButton等一系列的控件来配合使用作出不同的效果。2 Placement属性:获取或设置的方向 Popup 控件时,控件将打开,并指定的行为 Popup 控制时与屏幕边界重叠。MSDN上面的解释是:您可以通过设置相关的属性来定位弹出的位置,通过设置 PlacementTarget、PlacementRectangle、Placement、HorizontalOffset 和 VerticalOffsetProperty 属性来定位弹出项。3 其实这里PlacementRectangle和HorizontalOffset 和 VerticalOffsetProperty这一对属性可以做一些等价的替换,这些都是可以对Popup的弹出的位置进行微调。4 IsOpen属性,这个是最重要的属性之一,通常是通过绑定的方式来为其进行赋值,比如说:IsOpen="{Binding ElementName=PCheckBox,Path=IsChecked}" 是通过绑定CheckBox的IsChecked属性来控制Popup的弹出。最后需要重点介绍的就是StayOpen属性,MSDN的解释是:获取或设置一个值,该值指示当 Popup 控件焦点不再对准时,是否关闭该控件。当将 StaysOpen 属性设为 true 时,Popup 始终处于打开状态,直到通过将 IsOpen 属性设置为 false 将其显式关闭。当 StaysOpen 设置为false 时,Popup 控件会截获所有鼠标事件和键盘事件,以确定在 Popup 控件之外发生这些事件之一,最明显的区别是当设置IsOpen 为True时弹出Popup控件,当使用鼠标在另外的地方进行点击时Popup失去焦点,同时Popup隐藏,而当StaysOpen 设置为True时,当Popup失去焦点时,Popup则不会隐藏,此时仍然会保持打开的状态。

还有我们还可以设置一些Popup的弹出时的动画效果。我们可以设置PopupAnimation="Fade" 表示弹出时是通过渐入的方式进入的,这些在使用时需要注意。

下面通过一个小例子来说明Popup的用法,通过TextBox和Popup配合使用来达到类似于百度搜索框的效果,首先贴出重点的实现代码:

Text="{Binding DutyPersonName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"

Width="70"

Tag="{Binding DataContext,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ItemsControl}}">

CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=TextBox}}">

CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=TextBox}}">

Width="{Binding ActualWidth,ElementName=dutyPersonTextBox}"

IsOpen="{Binding ElementName=dutyPersonTextBox,Path=IsKeyboardFocused, Mode=OneWay}"

StaysOpen="True">

SnapsToDevicePixels="true"

ItemsSource="{Binding DataContext.SpecificHistoryMembers,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=my:MainWindow},Mode=TwoWay}"

HorizontalAlignment="Stretch"

ScrollViewer.HorizontalScrollBarVisibility="Disabled"

Background="#fff">

CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}}">

Height="Auto"

Width="Auto"

BorderBrush="{TemplateBinding BorderBrush}"

BorderThickness="{TemplateBinding BorderThickness}"

Background="{TemplateBinding Background}"

Padding="1"

SnapsToDevicePixels="true">

SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"

VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>

Value="false">

Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>

IsItemsHost="True"

HorizontalAlignment="Left"

VerticalAlignment="Center"

Width="{Binding ActualWidth,ElementName=dutyPersonTextBox}">

Padding="2"

SnapsToDevicePixels="true"

BorderThickness="1">

HorizontalAlignment="Stretch"

HorizontalContentAlignment="Left"

FontSize="13">

Value="true">

Value="#00a3d9"

TargetName="Border">

Value="0.6"

TargetName="Border">

最终实现的效果,如下所示:

c# js popup_关于WPF中Popup中的一些用法的总结相关推荐

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

    原文:关于WPF中Popup中的一些用法的总结 Popup控件是一个常用的非常有用的控件,顾明思义就是弹出式控件,首先我们来看看MSDN对它的解释吧,表示具有内容的弹出窗口,这个是非常重要的控件,我们 ...

  2. JS逆向学习笔记 - 持续更新中

    JS逆向学习笔记 寻找深圳爬虫工作,微信:cjh-18888 文章目录 JS逆向学习笔记 一. JS Hook 1. JS HOOK 原理和作用 原理:替换原来的方法. (好像写了句废话) 作用: 可 ...

  3. 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)

    WPF中Style的使用 Styel在英文中解释为"样式",在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外 ...

  4. jeecg-boot中popup实现动态传参

    jeecg-boot中popup实现动态传参 环境: 功能实现: 后话: 环境: 最近任务是基于jeecg-boot框架的,用的是jeecg-boot V2.4.0版. 功能实现: 有表"p ...

  5. 关于WPF的ComboBox中Items太多而导致加载过慢的问题

                                         [WFP疑难]关于WPF的ComboBox中Items太多而导致加载过慢的问题                         ...

  6. js实现随机选取[10,100)中的10个整数,存入一个数组,并排序。 另考虑(10,100]和[10,100]两种情况。...

    1.js实现随机选取[10,100)中的10个整数,存入一个数组,并排序. 1 <!DOCTYPE html> 2 <html lang="en"> 3 & ...

  7. js中!和!!的区别及用法

    js中!和!!的区别及用法 js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值, 1.!可将变量转换成boolean类型,null.undefined和 ...

  8. js插件---webuploader 使用(lavarel中使用)

    js插件---webuploader 使用(lavarel中使用) 一.总结 一句话总结: 多去看几个具体使用的实例,很多blog教程都有坑,多看几个交叉印证可以没那么多坑 1.webuploader ...

  9. js数组中foEach和map的用法详解 jq中的$.each和$.map

    数组中foEach和map的用法详解 相同点: 1.都是循环遍历数组(仅仅是数组)中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项value, ...

最新文章

  1. 大战C100K之-Linux内核调优篇--转载
  2. jst获取不到springmvc中model数据
  3. Rainmeter 天气
  4. svn迁移,备份,重装系统后恢复数据 收藏
  5. 【ArcGIS微课1000例】0004:值提取至点(Extract value to point)
  6. 动态规划(0-1背包)--- 改变一组数的正负号使得它们的和为一给定数
  7. centos安装php服务器,在CentOS上安装搭建PHP+Apache+Mysql的服务器环境方法
  8. arcgis js 地图打印_Arcgis在国土空间规划编制中的应用
  9. 手把手教我班小姐姐学java之方法重写与方法重载
  10. python经典程序实例-Python3经典100例(③)
  11. 21.go tool pprof
  12. 谈谈面向对象分析和设计
  13. 牛人搜集的常用的资源类网站及68个各类资源网站汇总
  14. oracle裁员原因_导致甲骨文全球性裁员的原因有哪些?
  15. def序列化器---视图序列化反序列化
  16. python创建ppt_ppt自动化创建工具——python-pptx
  17. 图片去水印软件分享!这三个好用的软件不能错过!​
  18. 程序设计天梯赛——T1(15分)java版
  19. 【转载】专家答疑:Silverlight的用户体验优化
  20. 参加公众号互推的背后

热门文章

  1. C#微信公众平台账号开发,从零到整,步骤详细。
  2. Excel图表—商务气息浓厚的滑珠图
  3. 个性化营销:您需要知道的信息
  4. 使图片按比例充满盒子
  5. 商家如何通过抖音带货?揭秘新手kol如何日带万单
  6. 百度云不限速c语言,如何解决百度云下载大文件限速问题
  7. python中map函数字典映射_浅析python中的map函数
  8. 双链表的相关操作(定义,后插,删除,遍历)
  9. JVM 垃圾回收相关概念
  10. HTML5动画-翻转音乐盒效果动画