2015-01-19 2 views
1

У меня есть следующие ControlTemplate определены:WPF - Есть ли способ настроить тип элемента в триггере ControlTemplate?

<ControlTemplate x:Key="buttonTemplate" TargetType="{x:Type Button}"> 
    <Border x:Name="buttonBorder"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock x:Name="txtLabel" Grid.Column="0"> 
       <ContentPresenter/> 
      </TextBlock> 
      <Canvas x:Name="reschedule" Grid.Column="1"> 
       <Path x:Name="path1" ... /> 
       <Path x:Name="path2" ... /> 
       <Path x:Name="path3" ... /> 
       <Path x:Name="path4" ... /> 
       <Path x:Name="path5" ... /> 
       <Path x:Name="path6" ... /> 
       <Path x:Name="path7" ... /> 
       <Path x:Name="path8" ... /> 
       <Path x:Name="path9" ... /> 
       <Path x:Name="path10" ... /> 
      </Canvas> 
     </Grid> 
    </Border> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter TargetName="buttonBorder" Property="Background" Value="DarkGreen"/> 
     </Trigger> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter TargetName="buttonBorder" Property="Background" Value="DarkGray"/> 
      <Setter TargetName="txtLabel" Property="Foreground" Value="Gray"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

Сейчас по умолчанию TextBlockForeground и PathFill свойства на которые были установлены в White. Когда кнопка отключена, я хочу установить эти свойства в Gray. Прямо сейчас он работает для TextBlock, и я могу заставить его работать для Path s, нацеливая каждое их имя, но есть ли способ нацеливать все элементы Path по типу? Что-то вроде:

<Setter TargetType="Path" Property="Fill" Value="Gray"/> 

Я попытался добавить следующий триггер стиля Border элемента, но он не работает:

<Border.Style> 
    <Style TargetType="Border"> 
     <Style.Resources> 
      <Style TargetType="Path"> 
       <Style.Triggers> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Property="Fill" Value="Gray"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </Style.Resources> 
    </Style> 
</Border.Style> 
+0

yes использовать в своем стиле 'TargetType =" {x: Type Path} ", это должно быть нацелено на все элементы типа' Path'. HTH – XAMlMAX

+0

Кажется, что триггеры, не определенные в блоке стиля, не имеют свойства «TargetType» – mikelt21

+1

в вопросе, у вас есть этот xaml '