2016-02-17 3 views
1

Я хочу Style a Border внутри a ControlTemplate. Но я не знаю, как получить к нему доступ. Моя Style выглядит следующим образом:Элемент доступа в ControlTemplate от стиля

<Style x:Key="RedCell" TargetType="DataGridCell" BasedOn="{StaticResource MYDGCellStyle}">    
     <Setter Property="Foreground" Value="White" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="DataGridCell"> 
        <Grid> 
         <Grid Grid.ZIndex="86" x:Name="CellContenGrind" Background="{TemplateBinding Background}" />        
         <Border Grid.ZIndex="87" x:Name="ContentBorder" BorderBrush="White" Background="Crimson" CornerRadius="25"> 
          <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
         </Border>        
         <Grid Grid.ZIndex="88" x:Name="CellGridFocused"/> 
        </Grid> 
        <ControlTemplate.Triggers> 

         <Trigger Property="IsFocused" Value="True"> 
          <Setter Property="Background" TargetName="CellGridFocused" Value="{DynamicResource Brush_DataGridCellFocused}" /> 
         </Trigger> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter Property="Background" TargetName="CellContenGrind" Value="{DynamicResource Brush_DataGridSelected}" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ungelesen}" Value="0"> 
       <Setter Property="Background" Value="Green"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 

мне нужно Background="{TemplateBinding Background}" на моем CellContentGrind из-за какой-то другой материал, так что я просто не могу двигаться, что к моему Border.

Если ungelesen = 0, я хочу Background моего ContentBorder быть зеленый. Как я могу это сделать?

ответ

0

Почему бы не переместить стиль на границу?

<Border Grid.ZIndex="87"x:Name="ContentBorder" BorderBrush="White" CornerRadius="25"> 
    <Border.Style> 
     <Style TargetType="Border"> 
      <Setter Property="Background" Value="Crimson" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ungelesen}" Value="0"> 
        <Setter Property="Background" Value="Green"/> 
       </DataTrigger> 
      </Style.Triggers>     
     </Style> 
    </Border.Style> 

    <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
</Border> 

Обратите внимание, что Background теперь задан Setter, чтобы сделать overridable с DataTrigger.

Смежные вопросы