[英]How to bind ColorBrush from inside ControlTemplate to a custom property outside of ControlTemplate?
这种绑定让我发疯,尝试了来自 stackoverflow 的各种(甚至可能是相同的)解决方案。 我不明白为什么绑定不起作用......
问题:
我有一个带有 ControlTemplate 的样式,该样式应用于 GridViewColumnHeader。 这是带有 ControlTemplate 属性的样式:
<Style x:Key="GridHeaderWithInkColor" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GridViewColumnHeader}">
<Border BorderThickness="0,0,0,1" BorderBrush="White">
<StackPanel Margin="0,0,0,10" Orientation="Vertical">
<TextBlock Text="{TemplateBinding Content}" Padding="5"
Width="{TemplateBinding Width}" TextAlignment="Left"
FontSize="24" Foreground="White"/>
<Rectangle Height="15" Width="70" Margin="10" RadiusX="5" RadiusY="5" StrokeThickness="2" Stroke="DarkGray" HorizontalAlignment="Center">
<Rectangle.Fill>
<SolidColorBrush Color="???????????????"/>
</Rectangle.Fill>
</Rectangle>
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我在 GridViewHeaderColumn 中使用如下模板:
<GridViewColumn HeaderContainerStyle="{StaticResource GridHeaderWithInkColor}" local:ExtendedProps.InkColor="{Binding MachineInfo.BarColorsList[0]}"/>
local:ExtendedProps.InkColor
是我自己定义的一个属性,以便能够在 xaml 中使用它。
**问题是:
我尝试了这个(以及其他变体、模板绑定等),但没有运气:
<SolidColorBrush Color="{Binding DataContext.IsItemSelected,
RelativeSource={RelativeSource AncestorType=GridViewColumn}}"/>
可能让我生活困难的两件事是(我认为):
如何在
GridViewColumn
时将ControlTemplate
内的SolidColorBrush
绑定到GridViewColumn
中的属性local:ExtendedProps.InkColor
。
GridViewColumnHeader
有一个Column
属性,您可以使用它来绑定GridViewColumn
的属性:
Color="{Binding Path=Column.(local:ExtendedProps.InkColor),
RelativeSource={RelativeSource AncestorType=GridViewColumnHeader}}"
该列不是标题的视觉祖先,因此使用{RelativeSource AncestorType=GridViewColumn}
将不起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.