[英]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.