是否由ContentControl实现了边距和填充?

时间:2009-01-23 16:32:14

标签: c# wpf custom-controls padding margin

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

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

提前致谢!

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分: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>

也许这有助于其他人。