WPF快速指导2:模板

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,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五个最佳媒体格式转换器

我们经常会遇到下载的视频文件格式不对&#xff0c;无法在其他播放设备&#xff08;如手机、DVD&#xff09;中使用的问题&#xff0c;现在&#xff0c;我们介绍五个功能强大且易于使用的媒体转换器&#xff0c;用于转换不同类型的视频文件。   Super (Windows) Super是一个免…

【机器学习】六种算法在人脸补全中的应用比较(K紧邻,线性,决策树,岭回归,套索回归,ElasticNet)

需求&#xff1a; 根据人的上半边脸预测下半边脸&#xff0c;用各种算法取得的结果与原图比较 思考&#xff1a; 这是一个回归问题&#xff0c;不是分类问题&#xff08;人脸数据不固定&#xff09; 数据集一共包含40个人&#xff0c;每一个人10张照片&#xff0c;分布规律 每…

性能优化之NSDateFormatter

为什么要优化NSDateFormatter&#xff1f;首先&#xff0c;过度的创建NSDateFormatter用于NSDate与NSString之间转换&#xff0c;会导致App卡顿&#xff0c;打开Profile工具查一下性能&#xff0c;你会发现这种操作占CPU比例是非常高的。据官方说法&#xff0c;创建NSDateForma…

QuickTime文件格式解析

QuickTime文件格式解析Peter Lee 2008-06-14 一、简介 QuickTime是Apple公司开发的一套完整的多媒体平台架构&#xff0c;可以用来进行多种媒体的创建&#xff0c;生产&#xff0c;和分发&#xff0c;并为这一过程提供端到端的支持&#xff1a;包括媒体的实时捕捉&#xff0c;…

python的数据类型转换

数据类型转换 将数据由当前类型变化为其他类型的操作就是数据类型转换。数据类型转换分为两类&#xff0c;分别是自动数据类型转换 和 强制数据类型转换。 自动转换(隐式转换) 自动转换时程序根据运算要求进行的转换&#xff0c;不许要人工干预。 1.自动类型转换不需要人工干…

Linux文件属性及如何修改文件属性

ls -al:显示文件的文件名与相关属性并列出所有文件详细的权限与属性 dr-xr-x---. 7 root root 4096 Apr3 12:31 . 权限 连接 所有者 用户组 文件容量 修改日期 文件名 第一个字符代表这个文件是“目录&#xff0c;文件&#x…

SyntaxError:identifier starts immediately after numeric literal

1、错误描写叙述2、错误原因因为在改动方法传參的过程&#xff0c;须要传个id&#xff0c;可是这个id是字符串类型&#xff0c;传入的是数值型3、解决的方法在传參时&#xff0c;须要加入“”&#xff0c;变成字符串类型User.modify("id");

python中的运算和运算符

运算和运算符 运算&#xff1a; 由一个以上的值经过变化得到新值得过程&#xff0c;就是运算。 运算符&#xff1a; 用于运算的符号&#xff0c;就是运算符 运算的分类&#xff1a; 1.算数运算 2.比较运算/关系运算 3.赋值运算 4.逻辑运算 5.位运算 6.成员运算 7.身份运算算术…

【数据分析】reshape(-1,1)和numpy的广播机制

在创建DataFrame的时候常常使用reshape来更改数据的列数和行数。 reshape可以用于numpy库里的ndarray和array结构以及pandas库里面的DataFrame和Series结构。 源数据 reshape函数 reshape&#xff08;行&#xff0c;列&#xff09;可以根据指定的数值将数据转换为特定的行数和…

蓝桥杯-组素数-java

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称&#xff1a; 蓝桥杯赛题 * 作 者&#xff1a; 彭俊豪 * 完成日期&#xf…

AVI文件规范

AVI文件规范PeterLee 2007-10-14 一、AVI文件简介 AVI的英文全称为Audio Video Interleaved&#xff0c;即音频视频交错格式&#xff0c;是将语音和影像同步组合在一起的文件格式。AVI于1992年被Microsoft公司推出&#xff0c;随Windows3.1一起被人们所认识和熟知。AVI文件格式…

python中的流程控制

流程控制 流程&#xff1a; 计算机执行代码的顺序&#xff0c;就是流程。 流程控制&#xff1a; 对计算机代码执行顺序的控制&#xff0c;就是流程控制。 流程分类&#xff1a; 流程控制一共分为三类&#xff0c;分别是 顺序结构、分支(选择)结构、循环结构。 顺序结构 顺序…

tomcat jdbc SlowQueryReport的实现解读

为什么80%的码农都做不了架构师&#xff1f;>>> ##序 tomcat提供了JdbcInterceptor可以用来监控jdbc的执行情况&#xff0c;默认提供了好几个现成的interceptor可以用&#xff0c;SlowQueryReport以及SlowQueryReportJmx就是其中的两个。 ##JdbcInterceptor的基本原…

【机器学习】Bagging和Boosting的区别(面试准备)

Baggging 和Boosting都是模型融合的方法&#xff0c;可以将弱分类器融合之后形成一个强分类器&#xff0c;而且融合之后的效果会比最好的弱分类器更好。 Bagging: 先介绍Bagging方法&#xff1a; Bagging即套袋法&#xff0c;其算法过程如下&#xff1a; 从原始样本集中抽取训…

python中的循环结构

循环结构 循环结构可以减少源程序重复书写的工作量(代码量)&#xff0c;用来描述重复执行某段算法的问题&#xff0c;这是程序设计中最能发挥计算机特长的程序结构。 Python中循环结构分为两类&#xff0c;分别是 while 和 for .. in while 格式1&#xff1a; num1,num2 3…

线性判别结合源码分析LDA原理

1. LDA的思想 LDA线性判别分析也是一种经典的降维方法&#xff0c;LDA是一种监督学习的降维技术&#xff0c;也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括&#xff0c;就是“投影后类内方…

RIFF文件规范

RIFF文件规范Peter Lee 2007-10-02 摘要&#xff1a;RIFF全称为资源互换文件格式&#xff08;Resources Interchange File Format&#xff09;&#xff0c;RIFF文件是windows环境下大部分多媒体文件遵循的一种文件结构&#xff0c;常见的如WAV文件、AVI文件等。RIFF可以看成一种…

FB宣布将回购60亿美元股票 首席会计官将离职

11月19日消息&#xff0c;据美国媒体报道&#xff0c;Facebook宣布将回购60亿美元股票&#xff0c;回购计划将在明年第一季度开始实施。另外&#xff0c;该公司还宣布首席会计官贾斯艾特瓦尔将离职。 短期回购股票可使Facebook赢得时间&#xff0c;缓解投资长期项目如Instagram…

2017小目标

最美人间四月天&#xff0c;没有三月的傲寒&#xff0c;没有五月的燥热&#xff0c;桃花刚偷去了红&#xff0c;杨柳在风中扭着腰&#xff0c;樱花正开的烂漫。工作繁忙之余。做一下深呼吸&#xff0c;沾衣欲湿杏花雨&#xff0c;吹面不含杨柳风。不知不觉2017第一季度已经结束…

【机器学习】feature_importances_ 参数源码解析

在用sklearn的时候经常用到feature_importances_ 来做特征筛选&#xff0c;那这个属性到底是啥呢。 分析源码发现来源于每个base_estimator的决策树的 feature_importances_ 由此发现计算逻辑来源于cython文件&#xff0c;这个文件可以在其github上查看源代码 而在DecisionTree…