WPF快速指导2:模板
    本文摘要:
    1:模板作用;
    2:样式模板;
    3:数据模板;
    4:如何使用ControlTemplate;
    5:如何使用DataTemplate;

一:模板作用
    1:样式模板,在应用程序内部维护和共享外观;
    2:数据模板,实现表现形式和逻辑的分离;


二:样式模板

    如:
    片段1:

    <Style TargetType="TextBlock"><Setter Property="HorizontalAlignment" Value="Center" /><Setter Property="FontFamily" Value="Comic Sans MS"/><Setter Property="FontSize" Value="14"/></Style>

    以上的样式模板用于对页面范围内TextBlock进行规范。注意Style中一个属性关键字BaseOn,如:片段2    
   <Style BasedOn="{StaticResource {x:Type TextBlock}}"TargetType="TextBlock"x:Key="TitleText">……</Style>

    这个属性标识是指如上的风格基于片段1,同时进行拓展。关于样式模板需要注意的几个方面:1:如果有多个 Setter 对 Style 的同一属性进行设置,则最后声明的 Setter 优先;2:以编程方式设置属性,textblock1.Style = (Style)(this.Resources["TitleText"]); 


三:数据模板

    数据模板的作用就是实现表现形式和逻辑的分离。
    查看如下的代码片段,
    片段3:

    <ListBox ItemsSource="{Binding Source={StaticResource MyPhotos}}" >            </ListBox>

这就意味着这个ListBox的数据源是资源中定义的MyPhotos数据源,如下:
    片段4

    <Window.Resources><ObjectDataProvider x:Key="MyPhotos" ObjectType="{x:Type local:PhotoList}"/></Window.Resources>

这个资源定义中有一个Package名local,我们如下定义:
    xmlns:local="clr-namespace:WpfApplication2"
    同时也指定了数据源的类型为PhotoList,即存在类为PhotoList以及PhotoList所对应的Item,类Photo。
    在UI呈现的时候,需要为MyPhotos动态添加数据,添加数据的代码如下:

        PhotoList Photos;private void WindowLoaded(object sender, RoutedEventArgs e){Photos = (PhotoList)(this.Resources["MyPhotos"] as ObjectDataProvider).Data;Photos.Path = "...\\...\\Images";}

注意,以上代码如果运行的话,ListBox呈现的是Photo的ToString()。要按照我们的需求显示实际的图片,仍旧需要定义DataTemplate,即
    片段5:

<DataTemplate DataType="{x:Type local:Photo}">
<Border Margin="3">
<Image Source="{Binding Source}"/>
</Border>
</DataTemplate>

四:如何使用ControlTemplate
    WPF 中的许多控件都使用 ControlTemplate 来定义控件的结构和外观,这样可将控件外观和控件功能分离开。 重新定义控件的 ControlTemplate 可以彻底改变控件的外观。使用ControlTemplate还可以创建自定义控件,在这里不做赘述。
    改变现有控件的一个典型例子如下:

       <Style TargetType="Button"><!--Set to true to not get any properties from the themes.--><Setter Property="OverridesDefaultStyle" Value="True"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="Button"><Grid><Ellipse Fill="{TemplateBinding Background}"/><ContentPresenter HorizontalAlignment="Center"VerticalAlignment="Center"/></Grid></ControlTemplate></Setter.Value></Setter></Style>

五:如何使用DataTemplate

DataTemplate 可用于自定义数据在控件上的显示方式。除了自定义数据外观之外,DataTemplate 还可以包含 UI 元素,这样大大增加了自定义 UI 的灵活性。DataTemplate的用法见下一章。

本文转自最课程陆敏技博客园博客,原文链接:http://www.cnblogs.com/luminji/archive/2011/01/09/1931392.html,如需转载请自行联系原作者

WPF快速指导2:模板相关推荐

  1. WPF快速指导1:资源

    WPF快速指导1:资源     本文摘要:     1:资源应用场景:     2:静态资源和动态资源:     3:Application.Current.Resources和Application ...

  2. WPF快速指导5:验证

    WPF快速指导5:验证 WPF快速指导5:验证     本文摘要:     1:WPF中的验证处理机制:     2:自定义验证规则:     3:如何显示验证错误信息     4:指定何时进行验证 ...

  3. WPF快速入门系列(6)——WPF资源和样式

    WPF快速入门系列(6)--WPF资源和样式 一.引言 WPF资源系统可以用来保存一些公有对象和样式,从而实现重用这些对象和样式的作用.而WPF样式是重用元素的格式的重要手段,可以理解样式就如CSS一 ...

  4. WPF XAML 资源样式模板属性存放位置

    WPF XAML 资源样式模板属性存放位置 原文:WPF XAML 资源样式模板属性存放位置 WPF的XAML 资源申明 类似HTML. 整体来说分3种 1.行类资源样式属性 1.1 行内属性 < ...

  5. 【转】WPF默认控件模板的获取和资源词典的使用

    一.获取默认的控件模板 WPF修改控件模板是修改外观最方便的方式,但是会出现不知道原来的控件的模板长什么样,或者如何在原有控件模板上修改的,下面就分享了获取某控件默认控件模板的方法(以控件Button ...

  6. php页面引用公共文件,WeiPHP插件模板中快速引入公共模板文件

    WeiPHP插件模板中快速引入公共模板文件,weiphp建立于onethink之上,简单修改代码,无需填写绝对路径实现轻松引入模板.记录一下,分享给需要的人. 修改文件: ThinkPHP/Libra ...

  7. WPF中的数据模板(DataTemplate)

    WPF中的数据模板(DataTemplate) 在WPF中我们可以为自己的数据定制显示方式,也就是说虽然某数据数据是一定 的,但我们可以做到让它的表现方式多种多样,比如一个时间,在以前我们一般使用一 ...

  8. gvim【二】【ab命令快速制作verilog模板】

    文章目录 一.前言 二.使用方法 1.将以下代码拷贝到 `_vimrc文件`中 2.打开gvim,敲入模板名字,敲回车即可 3. 自己制作模板方法 4. 注意事项 5. 下载 三.本系列其他博客 一. ...

  9. ssm商城系统html模块,jsp+ssm+mysql实现的【在线商城系统】毕设思路指导及模板文档...

    <p style="font-family:" font-size:1em;text-indent:2em;color:#666666;background-color:#f ...

最新文章

  1. Java之Object类与instanceof关键字
  2. 云炬Android开发笔记 8代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)
  3. 【笔记】 感受野与权值共享 摄像头标定 相机坐标与世界坐标
  4. 搭建卷积神经网络怎么确定参数_AI入门:卷积神经网络
  5. UVA 1609 Foul Play 不公平竞赛 (构(luan)造(gao)+递归)
  6. P4770:你的名字(SAM、线段树合并)
  7. varchar类型字段排序混乱问题
  8. Excel用户如何学习数据分析语言DAX?
  9. 也说说angularJs里的evalAsync
  10. Python生成舒尔特的Excel表格
  11. 关于工程总承包(EPC)项目最高限价的说明
  12. static关键字详解
  13. 计算机求圆面积公式,如何计算圆的面积?
  14. Mathematica仿真竞争性Lotka-Volterra方程(3种群)
  15. 已解决Pandas requires version ‘1.4.0‘ or newer of ‘sqlalchemy‘ (version ‘0.7.10‘ currently installed).
  16. Excel数据分析系列(5):Excel 数据可视化
  17. net core WebApi——文件分片上传与跨域请求处理
  18. WebDAV之葫芦儿·派盘+书藏家
  19. 线性回归、岭回归和Lasso回归
  20. Other——苹果锁屏有个像播放音乐的界面如何去掉

热门文章

  1. 衡水计算机考试报名入口,2018下半年NCRE全国计算机等级考试报名通知
  2. mats显存测试软件linux环境,Mats显存检测软件下载-Mats显存检测软件最新版下载-微侠手游网...
  3. 小米真蓝牙耳机说明书_小米真无线蓝牙耳机Air2 SE评测:仅需169元,享受随心畅听体验...
  4. Numpy实现酒鬼漫步问题【以及randint()、where()、cumsum()、argmax()的用法详解】
  5. leetcode559. N叉树的最大深度
  6. libxml的安装和相关数据结构详解
  7. 单基因gsea_筛到5分的核心基因以后你可以怎么做?
  8. springCloud - 第13篇 - 服务监控 集群模式 Hystrix-turbine
  9. 配置Oracle Instant Client环境
  10. objectdatasouce的温故