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 类?

css中margin、padding、border的默认值是多少

图片保持比例,padding的妙用

HTML CSS——margin与padding的初学

关于margin和padding百分比的问题

CSS设置元素内边距(padding)外边距(margin)