2016-03-08 6 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 свойство метки. Как я могу правильно убедиться, что цвет ярлыка правильно отслеживает состояние IsChecked базового RadioButton?

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

<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> 

Это выглядит прямо ко мне и IntelliSense предлагает большинство значений. Тем не менее, он по-прежнему не изменяет выбранные ярлыки на зеленый.

Спасибо, Энди

ответ

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

Это очень помогает. Благодарю. –

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