我想知道是否可以将诸如BorderThickness.Top之类的结构元素绑定(bind)到TemplatedParent的相应属性。我试过了
<Border Margin="0" Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}">
<Border.BorderThickness>
<Thickness Left="0" Right="0" Top="{TemplateBinding BorderThickness.Top}" Bottom="{TemplateBinding BorderThickness.Bottom}"/>
</Border.BorderThickness>
</Border>
我要执行此操作的原因是我希望“左”和“右”为0,并且仅绑定(bind)“上”和“下”。
提前致谢。
最佳答案
这是不可能的,因为“厚度”是一种值类型-您只能在依赖项对象的依赖项属性上创建绑定(bind)。
您可以做的是像平常一样绑定(bind)BorderThickness:
<Border Margin="0"
Padding="{TemplateBinding Padding}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness, Converter={StaticResource ThicknessConverter}}" />
然后使用转换器返回经过适当修改的“厚度”:
object Convert( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture )
{
var thickness = (Thickness) value;
return new Thickness( 0.0, thickness.Top, 0.0, thickness.Bottom );
}
您甚至可以使用ConverterParameter指定要清除的厚度部分。