Wil*_*lka 200 .net wpf contentpresenter contentcontrol
我不确定何时应该使用ContentPresenter而不是ContentControl(反之亦然).目前,我ContentControl几乎一直在使用我DataTemplate的.何时会ContentPresenter是更好的选择?为什么?
Nir*_*Nir 157
ContentControl是包含其他元素并具有Content-property(例如Button)的控件的基类.
ContentPresenter 用于控件模板内部以显示内容.
ContentControl,当直接使用(它应该用作基类)时,有一个控件模板,它使用ContentPresenter来显示它的内容.
我的经验法则(不适用于所有情况,使用您的判断):
ControlTemplate使用ContentPresenterControlTemplate(包括DataTemplate和模板外)尝试不使用它们中的任何一个,如果需要,你必须更喜欢ContentPresenterContentControl如果要创建一个托管内容的自定义"无视"控件,则子类,并且通过更改现有控件的模板无法获得相同的结果(这应该非常罕见).Tho*_*que 24
ContentPresenter通常用在ControlTemplate中,作为占位符来说"将实际内容放在这里".
ContentControl可以在任何地方使用,不一定在模板中.它将获取为分配给它的内容类型定义的任何DataTemplate
我最近在我的博客上写了一篇关于这两个控件的帖子:
ContentPresenter与ContentControl(编辑:已删除链接替换为存档版本.)
该ContentPresenter.ContentSource就是实际上使得两个类之间的最大区别.ContentSource属性仅在ControlTemplate中有意义; 它确定内容应映射到哪个TemplatedParent属性.例如,如果控件包含依赖项属性MyProperty1,那么我们可能会在其中找到以下内容ControlTemplate:
<ControlTemplate TargetType="MyControl" >
[...]
<ContentPresenter ContentSource="MyProperty1" />
[...]
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
ContentPresenter的内容将获得值MyProperty1.
请注意,如果属性的名称是Content,则无需指定,ContentSource因为它是默认值.
对于那些了解angularJs的人:这类似于transclude mecanism.
| 归档时间: |
|
| 查看次数: |
82660 次 |
| 最近记录: |