2016-03-08 31 views
2

我使用下面的风格与一组单选按钮的:如何再整一个XAML单选按钮作为彩色标签

 <Style x:Key="RadioTextStyle" TargetType="{x:Type RadioButton}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type RadioButton}"> 
        <Label Content="{TemplateBinding Content}" Foreground="Red"/> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsChecked" Value="True"> 
          <Setter Property="Background" Value="Green"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

不执行触发器,我想这是因为它是寻找器isChecked标签的属性。如何正确地确保标签颜色正确地跟踪底层RadioButton的IsChecked状态?

我现在还在这许多变种,目前有以下几种:

<Style x:Key="RadioTextStyle" TargetType="{x:Type RadioButton}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type RadioButton}"> 
        <Label x:Name="RadioLabel" Content="{TemplateBinding Content}" Foreground="Red"/> 
        <ControlTemplate.Triggers> 
         <DataTrigger Binding="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsChecked}" Value="True"> 
          <Setter Property="Foreground" Value="Green"/> 
         </DataTrigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

这一权利在我看来和智能表明大部分值。但是,它实际上并未将所选标签更改为绿色。

感谢, 安迪

回答

1

保持你原来的尝试。你只需要告诉你的触发器它实际上是在用什么来改变TargetName;

<Style x:Key="RadioLabel" TargetType="{x:Type RadioButton}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="{x:Type RadioButton}"> 

      <Label x:Name="RadioLabel" 
        Content="{TemplateBinding Content}" Foreground="Red"/> 

      <ControlTemplate.Triggers> 
       <Trigger Property="IsChecked" Value="True"> 
        <Setter TargetName="RadioLabel" 
          Property="Background" Value="Green"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

希望这会有所帮助,欢呼声。

+0

这有很大的帮助。谢谢。 –