Margin 和 Padding 是不是由 ContentControl 实现?
Posted
技术标签:
【中文标题】Margin 和 Padding 是不是由 ContentControl 实现?【英文标题】:Are Margin and Padding implemented by ContentControl?Margin 和 Padding 是否由 ContentControl 实现? 【发布时间】:2010-10-03 04:18:58 【问题描述】:我正在开发一个从 System.Windows.Controls.ContentControl 派生的自定义控件。在控件默认模板 (themes\generic.xaml) 中,我使用了一个包装实际内容的 Border 元素。
我的自定义控件是否已经实现了边距和内边距(即,根据自定义控件上设置的内边距缩小边框)或者我是否可以自己决定在哪里应用边距和内边距(即,设置外边距和内边距将边框元素上的属性设置为TemplateBinding Margin
等。
提前致谢!
【问题讨论】:
【参考方案1】:我通过为 ContentControl 定义样式并将 Padding 绑定到模板中定义的 ContentPresenter 的 Margin 解决了这个问题。
<Style TargetType="x:Type ContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="x:Type ContentControl">
<ContentPresenter Margin="TemplateBinding Padding"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
也许这对其他人有帮助。
【讨论】:
【参考方案2】:我相信在框架元素中实现了边距。但是填充不是。 ContentControl 具有“PaddingProperty”,但默认情况下它不执行任何操作。基本上,您将 Content 的 MarginProperty 绑定到内容控件的 Padding 属性。
【讨论】:
在此期间我一直在做一些实验。 (在层次结构的每一级添加彩色边框)我得出了相同的结论。还是谢谢你!以上是关于Margin 和 Padding 是不是由 ContentControl 实现?的主要内容,如果未能解决你的问题,请参考以下文章
bootstrap 是不是内置了 padding 和 margin 类?