【问题标题】: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} 等。

提前致谢!

【问题讨论】:

    标签: c# wpf custom-controls padding 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 属性。

      【讨论】:

      • 在此期间我一直在做一些实验。 (在层次结构的每一级添加彩色边框)我得出了相同的结论。还是谢谢你!
      猜你喜欢
      • 2015-11-20
      • 2011-03-21
      • 2021-07-09
      • 2018-06-27
      • 2016-10-30
      • 2022-01-18
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      相关资源
      最近更新 更多