2016-07-06 2 views
3

일종의 기본 익스팬더 스타일을 만들고 파생 스타일에서 헤더의 배경색을 덮어 쓸 수 있습니까? 내 응용 프로그램에서 나는 익스팬더를 많이 사용하고 있으며 헤더의 배경색을 변경하고 싶습니다. &을 복사하여 색상을 편집 할 수는 있지만 "기본 스타일"을 기반으로 새 스타일을 만들고 헤더의 배경색을 설정하는 것이 좋을 것입니다. 하지만이 색상에 액세스하는 방법을 모르겠습니다. 이 줄의 색은 다음과 같습니다 (머리글의 테두리) : 테두리 이름 = "테두리"... 파생 된 스타일의 설정자에서 "테두리"에 액세스 할 수 없습니다.베이스 익스팬더 스타일, 헤더 색상 오버라이드

이 내 (기본) 스타일 :

<Style TargetType="Expander" x:Key="ExpanderStyle"> 
    <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"/> 
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextColor}}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <!-- Control template for expander --> 
      <ControlTemplate TargetType="Expander" x:Name="exp"> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition Name="ContentRow" Height="0"/> 
        </Grid.RowDefinitions> 
        <Border Name="border" Grid.Row="0" Background="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}" BorderThickness="1" CornerRadius="4,4,0,0" > 
         <Grid> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="*" /> 
           <ColumnDefinition Width="20" /> 
          </Grid.ColumnDefinitions> 
          <ToggleButton x:Name="tb" FontFamily="Marlett" FontSize="9.75" Background="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}" Foreground="Black" Grid.Column="1" Content="u" IsChecked="{Binding Path=IsExpanded,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}" /> 
          <ContentPresenter x:Name="HeaderContent" Grid.Column="0" Margin="4" ContentSource="Header" RecognizesAccessKey="True" /> 
         </Grid> 
        </Border> 
        <Border x:Name="Content" Grid.Row="1" BorderThickness="1,0,1,1" CornerRadius="0,0,4,4" > 
         <ContentPresenter Margin="4" /> 
        </Border> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsExpanded" Value="True"> 
         <Setter TargetName="ContentRow" Property="Height" Value="{Binding ElementName=Content,Path=Height}" /> 
         <Setter Property="Content" TargetName="tb" Value="t"></Setter> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

내가 같은 것을 할 싶습니다 :

<Style x:Key="ExpanderStyleRed" BasedOn="{StaticResource ExpanderStyle}" TargetType="Expander"> 
      <Setter Property="???" Value="Red"/> 
<Style> 

답변

1

사용 TemplateBinding :

 <Style TargetType="Expander" x:Key="ExpanderStyle"> 
     <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"/> 
     <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextColor}}"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <!-- Control template for expander --> 
       <ControlTemplate TargetType="Expander" x:Name="exp"> 
        <Grid> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="Auto"/> 
          <RowDefinition Name="ContentRow" Height="0"/> 
         </Grid.RowDefinitions> 
         <Border Name="border" Grid.Row="0" Background="{TemplateBinding Background}" BorderThickness="1" CornerRadius="4,4,0,0" > 
          <Grid> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="*" /> 
            <ColumnDefinition Width="20" /> 
           </Grid.ColumnDefinitions> 
           <ToggleButton x:Name="tb" FontFamily="Marlett" FontSize="9.75" Background="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}" Foreground="Black" Grid.Column="1" Content="u" IsChecked="{Binding Path=IsExpanded,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}" /> 
           <ContentPresenter x:Name="HeaderContent" Grid.Column="0" Margin="4" ContentSource="Header" RecognizesAccessKey="True" /> 
          </Grid> 
         </Border> 
         <Border x:Name="Content" Grid.Row="1" BorderThickness="1,0,1,1" CornerRadius="0,0,4,4" > 
          <ContentPresenter Margin="4" /> 
         </Border> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsExpanded" Value="True"> 
          <Setter TargetName="ContentRow" Property="Height" Value="{Binding ElementName=Content,Path=Height}" /> 
          <Setter Property="Content" TargetName="tb" Value="t"></Setter> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Style x:Key="ExpanderStyleRed" BasedOn="{StaticResource ExpanderStyle}" TargetType="Expander"> 
     <Setter Property="Background" Value="#2fff0000"/> 
    </Style> 
다음 0

그리고 :

<Grid> 

    <Expander x:Name="expander1" Style="{DynamicResource ExpanderStyle}" Header="Expander" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="7,10,0,0" Height="108"> 
     <TextBlock Width="250" Height="150" TextWrapping="Wrap"> 
      asklsaklsa saaskklsaklas alsaklalkjd 
      asklsaklsaklsa saklsaklsakl jsajkjska 
      saklsaklsakl sasa 
     </TextBlock> 
    </Expander> 

    <Expander x:Name="expander2" Style="{DynamicResource ExpanderStyleRed}" Header="Expander" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="12,126,0,0" Height="133"> 
     <TextBlock Width="250" Height="150" TextWrapping="Wrap"> 
      asklsaklsa saaskklsaklas alsaklalkjd 
      asklsaklsaklsa saklsaklsakl jsajkjska 
      saklsaklsakl sasa 
     </TextBlock> 
    </Expander> 

</Grid> 

enter image description here