WPF之DataTemplateSelector技巧】的更多相关文章

WPF中如何通过一个属性来控制对象的模板,属性值改变时对象的模板会跟随改变? 两个关键点   1 属性/对象更改通知 方法一:继承INotifyPropertyChanged接口,当属性值更改时需要让对象的模板跟着改变,也就是该属性值更改时需要触发一个消息,告诉系统改属性值更改了. 方法二:使用ObservableCollection,当子项更改时也会触发消息. 2 模板选择器(DataTemplateSelector) 根据不同的属性值,调用不同的模板. END 方法一:使用属性触发    …
原文 WPF:DataTemplateSelector设置控件不同的样式 最近想实现这么个东西,一个ListBox, 里面的ListBoxItem可能是文本框.下拉框.日期选择控件等等. 很自然的想到了DataTemplateSelector,并且事先定义好各类DataTemplate以显示不同的控件. 先定义好各类资源     <Window.Resources>         <DataTemplate x:Key="textBox">          …
原文:WPF界面设计技巧(11)-认知流文档 & 小议WPF的野心 流文档是WPF中的一种独特的文档承载格式,它的书写和呈现方式都很像HTML,它也几乎具备了HTML的绝大多数优势,并提供了更强的编程支持及对WPF其他元素的兼容. 直接来看代码吧,需要讲解的地方比较多,我就直接注释在代码里了,看起来更方便些: Code <Window x:Class="流文档.Window1"     xmlns="http://schemas.microsoft.com/wi…
原文:WPF界面设计技巧(10)-样式的继承 PS:现在我的MailMail完工了,进入内测阶段了,终于可以腾出手来写写教程了哈,关于MailMail的介绍及内测程序索取:http://www.cnblogs.com/SkyD/archive/2008/08/09/1264083.html 欢迎帮我捉虫,以及与我交流WPF技术 WPF的样式的继承属性极少被文章提及,以至于我在编写MailMail期间为此踌躇数日,最后终于在E文版的MS社区得到指点才得以解惑. 现将其分享出来,这是一个非常有用的特…
原文:WPF界面设计技巧(9)-使用UI自动化布局 最近一直没时间更新这系列文章,因为我一直在埋头编写我的第一个WPF应用程序:MailMail 今天开始编写附属的加密/解密工具,对UI自动化布局有些心得,就此分享出来. 我们先来看一下实现的效果: 这样的界面是怎么个自动法呢?请看下图: 就是说界面在适度的伸缩时,不会破坏其布局结构及美观性. 这样做有什么好处呢?你可以想象以下情况: 1.需要用户或通过程序控制变更窗体尺寸以适应特殊要求时.UI自动化可以伸缩各元素以适应变化后的窗体. 2. 软件…
原文:WPF界面设计技巧(8)-自制山寨版CheckListBox 近年来IT市场山寨横行啊,我们今天也来发扬一下山寨精神,搞个自制的CheckListBox出来. 喏,CheckListBox 就是下面这玩意啦: 为什么要搞它?我们是山寨耶,说搞谁就搞谁! 我也不知道为什么,WPF里没有提供 CheckListBox 控件,但凭借WPF强大的外观定制能力,我们可以轻松的创制一个自己的 CheckListBox . CheckListBox 的基本功能其实和 ListBox 没有太大出入,只要将…
原文:WPF界面设计技巧(7)-模拟电梯升降的缓动动画 如同Flash一样,WPF的亮点之一也在于其擅于表现平滑的动画效果,但以移动动画来说,仅凭简单的起始位置.目标位置,所产生的动画仍会非常生硬,这种动画忽略了移动开始时的加速过程与移动结束时的减速过程. WPF在关键帧动画中提供了样条内插(Spline)型的关键帧,用以控制变化的速率曲线,但这东西实在有些复杂,且不够形象化,我研究很久也没明白如何实现“缓入--缓出”的效果,随后我从一本经典牛X却鲜有人知的过时的FlashMX教程中提取了一个缓…
原文:WPF界面设计技巧(6)-玩玩数字墨水手绘涂鸦 想让你的程序支持鼠标及手写笔涂鸦吗?只要敲入“<InkCanvas/>”这几个字符,你就会领悟什么叫“很好很强大”,今天我们来做一个手写板的演示,你可把它当作屏幕便笺使用. 首先要用 Microsoft Expression Design 2 画一幅英俊的界面背景,这里我们剽窃索尼 VAIO CR 笔记本的设计,做出了一个油光锃亮的面板: 记住还是要都绘制到一个图层上哦,图层命名为“back”. 导出为资源字典,嗯,油光锃亮: 打开 Mic…
原文:WPF界面设计技巧(5)-自定义列表项呈现内容 接续上次的程序,稍微改动一下原有样式,并添加一个数据模板,我们就可以达成下面这样的显示功能: 鼠标悬停于文件列表项上,会在工具提示中显示图像缩略图及文件名.文件大小信息. 选中一个列表项,该列表项会扩大,并动态显示出一个小缩略图及文件的所在路径. 代码如下: Code <Application x:Class="自定义列表项.App"     xmlns="http://schemas.microsoft.com/w…
原文:WPF界面设计技巧(4)-自定义列表项样式 有前面修改按钮样式的基础,我们可以尝试来定制一个即好看又好用的 ListBox ,今天先来讲“好看”部分. 打开 Microsoft Visual Studio 2008 ,建立一个WPF应用程序,调整窗体大小,在窗体内创建一个 ListBox 和一个 Button ,按下图所示布局. 在  Window1.xaml 中为窗体 Loaded 事件及按钮 Click 事件添加事件处理: Code <Window x:Class="自定义列表项…
原文:WPF界面设计技巧(3)-实现不规则动画按钮 发布了定义WPF按钮的教程后,有朋友问能否实现不规则形状的按钮,今天我们就来讲一下不规则按钮的制作. 不规则按钮的做法实际上和先前我们做不规则窗体的方法差不多,只是为按钮弄个不是那么方方正正的背景而已. 我们这次沿用自定义窗体时的设计图形,设计一个动态的不规则按钮,在这个示例中我们要将先前设计的整个图形作为按钮,并让外围的圆环始终围绕中心圆形旋转,在鼠标移入时,还要产生颜色变化及发光效果. 首先用 Microsoft Expression De…
原文:WPF界面设计技巧(2)-自定义漂亮的按钮样式 上次做了个很酷的不规则窗体,这次我们来弄点好看的按钮出来,此次将采用纯代码来设计按钮样式,不需要 Microsoft Expression Design 辅助了. 首先打开 Microsoft Visual Studio 2008 ,新建一个WPF项目,在上面随便放几个按钮: 然后给各个按钮设置不同的背景颜色: 设置好之后就是这样啦: 然后我们就开始在 App.xaml 文件中定义按钮样式了: 定义的样式代码如下: Code<Applicat…
原文:WPF界面设计技巧(1)-不规则窗体图文指南 初到园子,奉上第一篇入门级教程,请勿见笑. 以往WinForm编程中,实现不规则窗体是有一定难度的,更难的是不规则窗体的边缘抗锯齿及局部透明处理.而现在,WPF的出现使这个问题迎刃而解,使得我们可以轻松.灵活地美化用户界面. 下面就让我们来看看如何实现一个不规则窗体: 首先我们需要借助Microsoft Expression Design 2来进行图形设计.(这里使用Photoshop等传统软件也可以,但是只能利用PNG格式来实现透明,其缺点就…
本文主要记录WPF中DataTemplateSelector的运用,数据模板选择器主要运用在一些项容器中用于根据不同的数据类型选择不同的DataTemplate,以便展示不同的数据.在此以在listbox显示字符串和一个颜色块来说明DataTemplateSelector的运用. DataTemplateSelector运用的核心是需继承DataTemplateSelector类并重写其DataTemplateSelector方法,在UI上实现不同类型的DataTemplate,并将这不同的Da…
WPF中DataTemplateSelector的简单应用 DataTemplateSelector中文叫数据模板选择器,根据数据模型内的属性值选择不同的数据模板,多用于容器如listbox中,达到同一个DataContext却展示的样式不同的效果. 在这里我将举一个聊天效果展示的例子. 首先我们需要在有listbox的界面添加两个简单的DataTemplate 看得出来我们的样式差不多,绑定的数据也是一样,那么接下来就要实现一个DataTemplateSelector,我们自定义的ChatMe…
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案. 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过该控件来实现. 本文将主要介绍使用DevExpress WPF时如何在GridControl列中格式化日期时间值.本系列文章中,…
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案. 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过该控件来实现. 本文主要介绍使用DevExpress WPF时如何在TreeListView中扩展N级.DevExpress W…
下面这个就是:起点在(0,0)开始的正方形.(用绿色填充).此方法比一条一条的写方便多了! <Path Fill="LawnGreen" Data="M 0 0 L 100 0 L 100 100 L 0 100"> </Path> 更多详情:http://blog.csdn.net/johnsuna/article/details/1885597…
WPF中Style的使用 Styel在英文中解释为”样式“,在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外观更加美化同时减少了大量的复杂属性的设置. 在WPF中,设置外观样式我们有很多种方式,比如通过设置控件的属性来控制控件的外观样式:或者通过在每一个控件中分别设置Style:或者通过在整个Window.Resource中设置Style,又或者在App.xaml的Application.Resource设置Style. 在…
概述 我们经常会遇到这样的需求:到数据库里查找一些关键字,把带这些关键字的记录返回显示在客户端上.但如果仅仅是单纯地把文本显示出来,那很不直观,用户不能很轻易地看到他们想找的内容,所以通常我们还要做到“高亮显示”. 如果是用BS架构去实现,应该很简单,把相应的关键字加上一些label,然后给label定样式即可,或者直接用js在客户端渲染,减少服务器的负担,但CS架构就相对麻烦一点,我这里用WPF写了一个demo,实现了这个功能的演示: 另外本demo还包括了一些非常有用的wpf的小技巧. 功能…
本文不过多讲述wpf的基础布局控件,本文只记录WPF排版的技巧,这是个人的总结,不能符合所有情况,如果有何不对的地方,请评论指正,谢谢. 1.区域划分 在接手一个界面的时候,先纵观全局,将眼见的区域划分,将多个内容相关控件划分为一个区域, 推荐优先使用Grid进行区域的划分,尽量设置行列的宽高为Auto或者按*比例进行划分,设定定值宽高不易维护以及自适应. 2.寻找界面的共性 将所看到的属性作用相同的控件归类,比如大部分都是Label,可以将label行列归为一类,然后使用StackPanel或…
Kinect的麦克风阵列在Kinect设备的下方.这一阵列由4个独立的水平分布在Kinect下方的麦克风组成.虽然每一个麦克风都捕获相同的音频信号,但是组成阵列可以探测到声音的来源方向.使得能够用来识别从某一个特定的方向传来的声音.麦克风阵列捕获的音频数据流经过复杂的音频增强效果算法处理来移除不相关的背景噪音.所有这些复杂操作在Kinect硬件和Kinect SDK之间进行处理,这使得能够在一个大的空间范围内,即使人离麦克风一定的距离也能够进行语音命令的识别. 在Kinect应用程序中,选择操作…
之前一篇<工欲善其事,必先利其器.VS2013全攻略(安装,技巧,快捷键,插件)!> 看到很多朋友回复和支持,非常感谢,尤其是一些拍砖的喷油,感谢你们的批评,受益良多. 我第一份工作便是WPF的开发,一直到现在都非常喜欢这门技术,从懵懵懂懂到现在有一些WPF开发资历,也算是经历了一段坎坷的过程.我的朋友看到我写了VS2013的全攻略,他就推荐我写一个WPF篇,我想了下,的确很多朋友初接触WPF的时候难免会觉得WPF开发十分困难,归其原因,很多时候是出错后并不知道如何调试毫无头绪.下面我便顺着我…
WPF中Binding的技巧(一)   在WPF应用的开发过程中Binding是一个非常重要的部分. 在实际开发过程中Binding的不同种写法达到的效果相同但事实是存在很大区别的. 这里将实际中碰到过的问题做下汇总记录和理解. 1. source = {binding} 和source = {binding RelativeSource={RelativeSource self},Path=DataContext}效果相同 理解:{binding} 不设定明确的绑定的source,这样bind…
WPF中的Binding技巧(二)     接上篇, 我们来看一看Elementname,Source,RelativeSource 三种绑定的方式 1.ElementName顾名思义就是根据Ui元素的Name来进行绑定: 例子: <Window x:Name="MainWindow"> <Grid>               <Button Background="{Binding ElementName=MainWindow, Path=B…
WPF TextBox 一些设置技巧 运行环境:Win10 x64, NetFrameWork 4.8, 作者:乌龙哈里,日期:2019-05-01 参考: 章节: 取消输入法 输入方式设定为Overwrite 限定输入字符数 一.取消输入法 TextBox txbx=new TextBox(); InputMethod.SetIsInputMethodEnabled(txbx, false);//关掉输入法 二.输入方式设定为Overwrite //把输入改成 overwrite 模式 //…
其实也说不上算是教程了,只是把自己学习的代码拿出来分享一下,同时方便以后遇到类似问题的时候翻一下.MSDN里如是说:通常,如果有多个 DataTemplate 可用于同一类型的对象,并且您希望根据每个数据对象的属性提供自己的逻辑来选择要应用的 DataTemplate,则应创建 DataTemplateSelector.请注意,如果具有不同类型的对象,则可以对 DataTemplate 设置 DataType 属性.如果您执行了此操作,则无需创建 DataTemplateSelector.此外,…
数据模板 样式提供了基本的格式化能力,但是不管如何修改ListBoxItem,他都不能够展示功能更强大的元素组合,因为了每个ListBoxItem只支持单个绑定字段(通过DisplayMemberPath属性设置),不可能包含多个字段或者图像的富列表. 数据模板就是这样一个能够突破这个最大限制,允许组合使用来自绑定对象的多个属性,以特定的方式排列他们并显示简单字符串的高级样式. 数据模板是一个定义如何显示绑定的数据对象的XAML标记,有两类控件支持数据模板: 内容控件:通过ContentTemp…
列表控件 ItemsControl为列表项控件定义了基本功能,下图是ItemsControl的继承关系: 在继承自ItemsControl类的层次结构中,还显示了项封装器(MenuItem.TreeVIewItem),因为这些项(类)可以包含自己的项集合(从而实现数控件和菜单的嵌套关系和层次结构).在继承表中没有ComboBoxItem和ListBoxItem没有出现,那是因为他们不需要包含项的子集合,所以也就不继承自ItemsControl类. ItemsControl类中雨格式化相关的属性:…
系列文章链接 WPF进阶技巧和实战01-小技巧 WPF进阶技巧和实战02-布局 WPF进阶技巧和实战03-控件(1-控件及内容控件) WPF进阶技巧和实战03-控件(2-特殊容器) WPF进阶技巧和实战03-控件(3-文本控件及列表控件) WPF进阶技巧和实战03-控件(5-列表.树.网格01) WPF进阶技巧和实战03-控件(5-列表.树.网格02) WPF进阶技巧和实战03-控件(5-列表.树.网格03) WPF进阶技巧和实战03-控件(5-列表.树.网格04) WPF进阶技巧和实战04-资…