WPF ControlTemplate TemplateBinding
        — 控件模板中元素属性绑定

  (标题起这个名字感觉不太合适,由于水平有限就暂且这样明白吧,希望前辈看到好能指正,再次先谢过了! )
控件(Control)都有自己的默认呈现形式(Template),有时候出于项目的需要,我们可能需要为控件重新定义显示模板(Template),使控件看起来更加美观,界面更加华丽。
新模板的格式需要写在Style段落中语法格式形如:

  <Style x:Name="mystyle" TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}"
Fill="{TemplateBinding Background}">
</Ellipse>
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

<Button Margin="122.5,119.5,80,70" Name="button1" Background="Green" Click="button1_Click" Foreground="Red">Button</Button>

代码中 :

TemplateBinding 用于将模板元素属性绑定到使用该模板的控件属性。此绑定是单行绑定(one way).

举例: Fill="{TemplateBinding Background}" 使用该模板的控件的FILL属性设置为红色,则模板中的椭圆形背景色变为红色。
该示例代码中的应用该模板的控件宽(Width)、高(Height)属性直接影响到模板中椭圆形控件的形状(圆形OR椭圆).

  由于我们用ControlTemplate重写了Button的样式,所以我们也要在ControlTemplate中增加ControlPresenter。

通过ControlPresenter中的Content来绑定父容器的Content属性(ControlPresenter有个隐式的Content="{TemplateBinding Content}",也就是你可以写也可以不写它)。

(代码圆形效果如下:)

参考文章:http://msdn.microsoft.com/zh-cn/library/system.windows.controls.contentpresenter.aspx

http://hi.baidu.com/oemsea/blog/item/242b58586b120ac09c8204c4.html

转载于:https://www.cnblogs.com/JasonJI/archive/2012/03/29/2423543.html

WPF ControlTemplate TemplateBinding相关推荐

  1. wpf的控件style

    前段时间一直在做wpf的UI开发,每次想做些控件style定制的时候都很头疼 很多控件不知道他的controltemplate是什么样的 为了方便大家写style 特别奉上wpf的style大全 从此 ...

  2. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(7月16日-7月22日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(7月16日-7月22日) 本周Silverlight学习资源更新 Silverlight DataGrid用法 模板列 ...

  3. WPF中ControlTemplate和DataTemplate的区别

    原文:WPF中ControlTemplate和DataTemplate的区别 下面代码很好的解释了它们之间的区别: <Window x:Class="WPFTestMe.Window1 ...

  4. WPF Template模版之DataTemplate与ControlTemplate的关系和应用【二】

    1. DataTemplate和ControlTemplate的关系 学习过DataTemplate和ControlTemplate,你应该已经体会到,控件只是数据的行为和载体,是个抽象的概念,至于它 ...

  5. TemplateBinding与Binding区别,以及WPF自定义控件开发的遭遇

    在上一次的文章WPF OnApplyTemplate 不执行 或者执行滞后的疑惑谈到怎么正确的开发自定义控件,我们控件的样式中,属性的绑定一般都是用TemplateBinding来完成,如下一个基本的 ...

  6. [WPF自定义控件库] 自定义控件的代码如何与ControlTemplate交互

    [WPF自定义控件库] 自定义控件的代码如何与ControlTemplate交互 原文:[WPF自定义控件库] 自定义控件的代码如何与ControlTemplate交互 1. 前言 WPF有一个灵活的 ...

  7. WPF入门第三篇 ControlTemplate、Trigger与Storyboard

    ControlTemplate.Trigger与Storyboard ControlTemplate通常用在Style中,Trigger通常作为ControlTemplate的一部分,StoryBoa ...

  8. 闲话WPF之二四(WPF中的ControlTemplate [2])

    前面关于ControlTempalte的Post当中,只说明了如何定义的外观.如果对于很复杂的自定义控件,通常我们还需要在ControlTemplate使用Resource.很显然,Resource的 ...

  9. 为什么这儿TemplateBinding不起作用了—研究WPF Binding(一)

    工作中,写自定义控件,遇到一个奇怪的问题.场景是这样的:一个ListBox或其他ItemsControl显示数据列表,下方一个TextBlock显示列表中选定的值,代码大概是这样的(做了简化): &l ...

最新文章

  1. Win7环境下搭建GO开发平台——SublimeText 2
  2. 查看mysql数据库大小、表大小和最后修改时间
  3. git常用命令(二)
  4. java jps监控_记录java虚拟机性能监控工具(jps与jstat)的使用
  5. 软件开发人员的“七重苦”(2)
  6. nagios-3.4.3搭建
  7. python常用函数和操作_python一条语句分析几个常用函数和概念 -
  8. 前端工具--less篇
  9. 韩信大招:一致性哈希
  10. 不扯概念,用例子演示什么是脏读,不可重复读,幻读?
  11. tshark 操作后保存为pcap数据包
  12. 【博客项目】—登录功能实现( 四)
  13. 调试工具_Apifox for Mac(接口调试管理工具)
  14. 103.及时清除缓存
  15. HDU 2089:不要62(数位DP)
  16. 【VS开发】Windows平台下Makefile学习笔记
  17. postSQL安装和GIS数据导入
  18. Swing开发之JButton篇
  19. 美团大众点评往届笔试面试题汇总
  20. Sed 流文本编辑器

热门文章

  1. Python3算术运算符
  2. elasticsearch高亮显示查询结果
  3. nodejs ajax进度条,Ajax异步文件上传与NodeJS express服务端处理的示例分析
  4. 什么是循环神经网络——学习笔记
  5. 以下python语言关键字在异常处理_【单选题】以下 Python 语言关键字在异常处理结构中用来捕获特定类型异常的选项是: ( )...
  6. 手机蓝牙如何减少延时_如何使用车载蓝牙播放手机音乐的方法
  7. java泛型基类list_泛型:列表?扩展Animal与List Animal相同吗?
  8. Cpp 对象模型探索 / 含有虚基类的类的内存布局
  9. 安装Win7时出现“安装程序无法创建新的系统分区……”的解决办法
  10. 替代触发器如何加判断 条件_《小逻辑》:如何设定目标,制定计划,做出更好的选择...