我正在开发一个从 System.Windows.Controls.ContentControl 派生的自定义控件。在控件默认模板 (themes\generic.xaml) 中,我使用了一个包装实际内容的 Border 元素。
我的自定义控件是否已经实现了边距和填充(即,根据自定义控件上设置的填充缩小边框)或者我是否可以自己决定应用边距和填充的位置(即,设置边距和填充属性边框元素{TemplateBinding Margin}
等
提前致谢!
我正在开发一个从 System.Windows.Controls.ContentControl 派生的自定义控件。在控件默认模板 (themes\generic.xaml) 中,我使用了一个包装实际内容的 Border 元素。
我的自定义控件是否已经实现了边距和填充(即,根据自定义控件上设置的填充缩小边框)或者我是否可以自己决定应用边距和填充的位置(即,设置边距和填充属性边框元素{TemplateBinding Margin}
等
提前致谢!
我相信在框架元素中一直执行保证金。但是填充不是。ContentControl 具有“PaddingProperty”,但默认情况下它不执行任何操作。基本上,您将 Content 的 MarginProperty 绑定到内容控件的 Padding 属性。
我通过为 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>
也许这对其他人有帮助。