繁体   English   中英

从其模板访问元素属性值

[英]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,您经常会在默认控件模板中看到此控件,这些控件用于诸如PaddingMarginSnapsToDevicePixels类的属性的控件

您可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM