簡體   English   中英

如何從 ControlTemplate 內部將 ColorBrush 綁定到 ControlTemplate 外部的自定義屬性?

[英]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 中使用它。

**問題是:

  1. 如何在使用時將 ControlTemplate 內的 SolidColorBrush 綁定到 GridViewColumn 中的屬性 local:ExtendedProps.InkColor。**

我嘗試了這個(以及其他變體、模板綁定等),但沒有運氣:

<SolidColorBrush Color="{Binding DataContext.IsItemSelected,
                         RelativeSource={RelativeSource AncestorType=GridViewColumn}}"/>                                                        

可能讓我生活困難的兩件事是(我認為):

  • SolidColorBrush 嵌套在其他控件中。
  • 我嘗試使用的屬性是自定義屬性(我確定它定義正確)。

如何在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM