7

我正在开发一个从 System.Windows.Controls.ContentControl 派生的自定义控件。在控件默认模板 (themes\generic.xaml) 中,我使用了一个包装实际内容的 Border 元素。

我的自定义控件是否已经实现了边距和填充(即,根据自定义控件上设置的填充缩小边框)或者我是否可以自己决定应用边距和填充的位置(即,设置边距和填充属性边框元素{TemplateBinding Margin}

提前致谢!

4

2 回答 2

10

我相信在框架元素中一直执行保证金。但是填充不是。ContentControl 具有“PaddingProperty”,但默认情况下它不执行任何操作。基本上,您将 Content 的 MarginProperty 绑定到内容控件的 Padding 属性。

于 2009-01-23T16:41:18.067 回答
1

我通过为 ContentControl 定义样式并将 Padding 绑定到模板中定义的 ContentPresenter 的边距解决了这个问题。

<Style TargetType="{x:Type ContentControl}">
     <Setter Property="Template">
          <Setter.Value>
               <ControlTemplate TargetType="{x:Type ContentControl}">                          
                    <ContentPresenter Margin="{TemplateBinding Padding}"/>                                
               </ControlTemplate>
          </Setter.Value>
     </Setter>
</Style>

也许这对其他人有帮助。

于 2018-02-27T10:18:09.607 回答