日期:2014-05-17  浏览次数:21897 次

WPF,控件模板中使用ContentPresenter
在控件模板中有这么一句:
<ContentPresenter ContentSource="Content"/>

这是什么意思呢?ContentPresenter的ContentSource属性,我看了MSDN,都不太看得懂是什么意思

------解决方案--------------------
如果你使用过asp.net,那么相当于它的 HolderPlace 或者 ContentPlace。
------解决方案--------------------
既然是模板,那么自然哟固定部分和可变部分,那个ContentPresenter 就是可变部分,其它则是固定部分。在使用模板时,固定部分无法进行设计,只能控制其属性,而可变部分则可以在设计视图中任意设计样式。
------解决方案--------------------
<ContentPresenter ContentSource="Content"/>
这句是说在模板中放入的内容是模板所在的content
ContentPresenter相当于一个容器 用于放真正的Content

例如你写个button的模板
里面放ContentPresenter
然后再写button的时候这样写
<button >
  <textblock text="按钮"/>
</button>
这样ContentPresenter的内容实际上就是这个textblock
懂了吧?就是一个容器而已
------解决方案--------------------
引用:
ContentPresenter我是理解的,它是ContentControl控件模板中用的,我就是不理解ContentSource属性,它是不是下面绑定的简化形式呢?
<ContentPresenter Content="{TemplateBinding Content}"/>


恩恩 是的 我一般是写全了的TemplateBinding Content

msdn:http://msdn.microsoft.com/zh-cn/library/vstudio/system.windows.controls.contentpresenter.aspx
原话是这样说的
当 ContentPresenter 对象在 ContentControl、 Content、 ContentTemplate和 ContentTemplateSelector 属性访问的 ControlTemplate 其从 ContentControl的相同名称的属性的值。 可以通过设置 ContentSource 属性或绑定具有 ContentPresenter 属性访问这些属性的值从模板化的父元素的其他属性为它们。