WPF的模板选择

典型的,把模板关联到一块特定的数据上,不过通常希望动态的确定使用哪个模板---既可以基于一个属 性值,也可以是一个全局状态。当真正需要大规模替换模板时,也可以使用DataTemplateSelector。

DataTemplateSelector提供了一个单一的方法----SelectTemplate,以允许通过执行任何逻辑来决定 使用哪个模板。可以在被包含的元素中查找模板,并返回一些硬编码的模板,甚至动态的为每个条目创建模板 。

首先,创建一个继承自DataTemplateSelector的类,并完成一些在几个模板中进行旋转的逻辑。在 这个例子中,将找到XmlElement的LocalName,并从容器中获取具有该名称的资源,代码如下:

public class LocalNameTemplateSelector : DataTemplateSelector

   {

       public override DataTemplate SelectTemplate (object item,DependencyObject container)

       {

           XmlElement data = item as XmlElement;

           if (data != null)

           {

               return ((FrameworkElement)container).FindResource(data.LocalName) as DataTemplate;

           }

           return null;

       }

   }

为了初始化所有的模板,将构建三个模板:用于书籍的棕色矩形,用于CD的银色圆形以及用于 DVD的蓝色圆形。由于模板选择器将查找XmlElement的本地名称,所以需要为每个模板设置X:Key,代码如下:

<DataTemplate x:Key="Book" DataType="{x:Type sx:XmlElement}">
           <StackPanel Orientation="Horizontal">
           <Rectangle Margin="2" Width="14" Height="14" Fill="Brown"/>
           <TextBlock  VerticalAlignment="Center" Text="{Binding XPath=@Title}"></TextBlock>
           </StackPanel>
       </DataTemplate>

       <DataTemplate x:Key="CD" DataType="{x:Type sx:XmlElement}">
           <StackPanel Orientation="Horizontal">
               <Ellipse Margin="2" Width="14" Height="14" Fill="Silver"/>
               <TextBlock  VerticalAlignment="Center" Text="{Binding XPath=@Title}"></TextBlock>
           </StackPanel>
       </DataTemplate>

       <DataTemplate x:Key="DVD" DataType="{x:Type sx:XmlElement}">
           <StackPanel Orientation="Horizontal">
               <Ellipse Margin="2" Width="14" Height="14" Fill="Blue"/>
               <TextBlock  VerticalAlignment="Center" Text="{Binding XPath=@Title}"></TextBlock>
           </StackPanel>
       </DataTemplate>

余下的就是把模板选择器和ListBox进行关联,而不是设置静态模板 ,代码如下:

<ListBox ItemsSource="{Binding XPath=/Media/*}">
           <ListBox.ItemTemplateSelector>
               <l:LocalNameTemplateSelector xmlns:l="clr-namespace:WpfProgressBarDemo"/>
           </ListBox.ItemTemplateSelector>
       </ListBox>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索模板
, 代码
, 选择
, xmlelement
, 圆形
, selecttemplate用户名密码
, 一个
WPF模板
wpf 模板选择器、wpf 数据模板选择器、wpf 带图片的按钮模板、wpf 模板、wpf 控件模板,以便于您获取更多的相关知识。

时间: 2024-09-13 12:00:35

WPF的模板选择的相关文章

小猪CMS微网站模板选择与预览功能升级

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 小猪CMS一直在用户最关心的微网站功能上花费很多的研发精力,一个月内,小猪CMS在微网站模块上各种升级调整动作频繁,比如增加微网站无限级分类功能.增加分类单独选择模板功能.增加微网站模板.模板按照行业分类等一系列针对微网站的升级和优化.其中微网站无限级分类和单独设置模板功能均为小猪CMS全网独家研发功能.这一连串的调整彰显了小猪CMS团队的技

浅议PHP程序开发中的模板选择

程序|模板 关于PHP的模板的确是一个说起来容易做起来麻烦的事情.随便一数大概有20种以上的选择,光pear里面就包含了5中不同的模板,实在让人头疼. 千万不要人云亦云的说这个好那个不好,选择模板之前最好先应该搞清楚模板的真正目的是什么? 简单地说,模板的核心目的就是一个 team work.主要的作用方式有两种: 1.分离HTML和PHP使网页设计师和PHP程序员合作更加愉快. 2.分离显示逻辑和事物逻辑,使得核心事务逻辑的变更和应用程序的扩展更加容易和灵活,也就是说使得程序员之间合作更加愉快

说一说PHP程序开发中的模板选择

关于PHP的模板的确是一个说起来容易做起来麻烦的事情.随便一数大概有20种以上的选择,光pear里面就包含了5中不同的模板,实在让人头疼. 千万不要人云亦云的说这个好那个不好,选择模板之前最好先应该搞清楚模板的真正目的是什么? 简单地说,模板的核心目的就是一个 team work.主要的作用方式有两种: 1.分离HTML和PHP使网页设计师和PHP程序员合作更加愉快. 2.分离显示逻辑和事物逻辑,使得核心事务逻辑的变更和应用程序的扩展更加容易和灵活,也就是说使得程序员之间合作更加愉快.(这一点经

分享营销型网站模板选择技巧

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 网站建设完成之后,很多站长就开始营销推广了,于是网站所提供的服务起到的作用不是很大,业务量非常少,笔者认为建设一个提供服务展示的网站在其网 站模板上应该为其进行设计,但是目前在互联网上有很多这方面的网站,例如模板天下就是其中的一个,这些包含有discuz.dedecms. phpwind等程序模板,有一大部分是免费下载使用的,但是如果大家都是

Oracle DBCA高级玩法:从模板选择、脚本调用到多租户

作者介绍 杨建荣,DBAplus社群联合发起人.现就职于搜狐畅游,Oracle ACE-A.YEP成员,超7年数据库开发和运维经验,擅长电信数据业务.数据库迁移和性能调优.持Oracle 10G OCP,OCM,MySQL OCP认证,<Oracle DBA工作笔记>作者.   本篇文章的思路如下: DBCA-熟悉而又陌生 Oracle中创建数据库的模板      解读seed模板的原理 解析seed模板创建数据库的过程     解析DBCA的调用脚本      DBCA和技术趋势发展的关系 

WPF中如何查找数据模板中的子元素

前两天在写一个WPF程序时,突然发现DataGrid控件没有筛选功能,但我不急,因为我知道,WPF的好处在于UI与逻辑的分离,要给数据网格控件加上输入筛选功能并不复杂,也不用去找第六方控件了,直接从DataGrid类派生一个类,并重定义它的控件模板,在DataGrid原有的控件模板上加一个StackPanel就可以了,方向为水平排列,放在列标头的下方.然后在代码中根据各个列的情况,向那个StackPanel添加N个文本框就可以输入筛选信息了.呵呵,虽不算完美,解决燃眉之急还是可以的. 这样我就想

从WPF Diagram Designer Part 1学习控件模板、移动、改变大小和旋转

由于上周主要做了项目组产品架构.给公司新员工培训以及其他会议等事情,在OpenExpressApp对建模支持的初步计划中我列了一些建模任务还没有开展,其中参考部分在以前的blog中都已经介绍了(MetaModelEngine:元模型引擎开发思路.DSM:使用MetaEdit+编写Family Tree Modeling Language.读书笔记:Visual Studio DSL工具特定领域开发指南).今天手头上没有其他重要事情了,可以开始进行学习WPF的图形设计器了,这也就是我在WPF -

企业做网站合理选择网站模板

考虑跨行业模板选择 用自助建站的时候就知道,网站模板都是现成的,所以其创意性同独特性都是有限的.怎样选择模板可以令自己的企业网站有"万绿丛中一点红"的突出效果?虽然一般的建站平台都貌似很体贴的给我们分类设计好不同行业的模板,不过这也导致了同一行业的网站看起来也是千篇一律,所以,不妨跳出同行业,选择跨行业,譬如你做的是建筑行业,那么,不妨去瞄瞄选择信息行业的模板,那么,你的网站在同行中自然鹤立鸡群,出奇制胜了. 选择成品网站模版 人都有一个习惯,吃得多山珍海味,就想念粗茶淡饭.网民对于一

如何选择一款适合自己的网站模板

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 年前写过一篇文章<从网站改版引发的流量与体验的思考>, 对建站过程中如何对待网站模板做了一个自己的观点阐述,内容主要是针对网站处于建站初期时的一个应对办法.对于网站初具规模,或者目前的瓶颈就在网站外观 和体验方面,那么面对形形色色.数量众多的网站模板,作为站长应该如何选择网站模板呢?笔者今天想就这些问题跟大家继续分享一些选择网站模