[英]Accessing element attribute value from its template
我有一个在xaml中定义的组合框:
<ComboBox Width="100"/>
这个ComboBox以及我拥有的所有其他combobx,都使用ControlTemplate进行了样式设置,我在其中复制并编辑了一些颜色等。
<ControlTemplate TargetType="{x:Type ComboBox}">....
在此控件模板中,如何从上面的元素访问Width属性的值?
因此,例如:
<ControlTemplate TargetType="{x:Type ComboBox}">
<Grid Width="??{Binding WidthValue}??" >....
{Binding WidthValue}为100时,从上面的Width =“ 100”开始。
<Grid Width="{TemplateBinding Width}">
PS,您经常会在默认控件模板中看到此控件,这些控件用于诸如Padding
, Margin
和SnapsToDevicePixels
类的属性的控件
您可以使用TemplatedParent
绑定
<Grid Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Width}">
但是您不需要,因为Grid
应该伸展,所以如果将ComboBox
限制为100,则应该自动将Grid
限制在内部
编辑
如果您需要绑定到宽度,那么我建议绑定到ActualWidth
而不是Width
<Grid Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ActualWidth}">
因为不需要在使用此模板的所有控件中都定义Width
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.