我在xaml中定义了一个组合框:
<ComboBox Width="100"/>
这个ComboBox,以及我拥有的所有其他组合框,都是用ControlTemplate设计的,我复制并编辑了一些颜色等等。
<ControlTemplate TargetType="{x:Type ComboBox}">....
在此控件模板中,如何从上面的元素中访问Width属性的值?
例如:
<ControlTemplate TargetType="{x:Type ComboBox}">
<Grid Width="??{Binding WidthValue}??" >....
{Binding WidthValue}为100,从宽度=“100”以上。
答案 0 :(得分:1)
<Grid Width="{TemplateBinding Width}">
P.S。您经常会在默认控件模板中看到这用于Padding
,Margin
和SnapsToDevicePixels
答案 1 :(得分:0)
您可以使用TemplatedParent
绑定
<Grid Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Width}">
但是你不应该Grid
应该伸展,所以如果你将ComboBox
限制为100,你应该自动限制Grid
里面
编辑
如果你需要绑定到宽度,那么我建议绑定到ActualWidth
而不是Width
<Grid Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ActualWidth}">
因为Width
不需要在使用此模板的所有控件中定义