2016-11-10 150 views
1

我想重寫一個RadioButton風格,看起來像一個ToggleButton單選按鈕更改背景顏色,當檢查

<RadioButton Content="Point"> 
    <RadioButton.Template> 
     <ControlTemplate> 
      <ToggleButton IsChecked="{Binding IsChecked, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}" 
          Content="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}"/> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsChecked" Value="True"> 
        <Setter Property="Background" Value="Red"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </RadioButton.Template> 
</RadioButton> 

我需要時,它的檢查,以改變按鈕的背景顏色。我試着用觸發器,但它不工作。

回答

2

該解決方案不是一個簡單的解決方案。這個問題與切換按鈕在檢查時具有默認背景並且在將其更改爲不同的背景之前必須被移除的事實相關。

看看這個話題:changing background color of togglebutton when checked

這是應該做你想要的代碼(用這個話題參考remove blue highlight on buttons wpf):

<RadioButton Content="Point"> 
     <RadioButton.Template> 
      <ControlTemplate> 
       <ToggleButton IsChecked="{Binding IsChecked, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}" 
           Content="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}" Background="Transparent"> 
        <ToggleButton.Style> 
         <Style TargetType="ToggleButton"> 
          <Setter Property="OverridesDefaultStyle" Value="True"/> 
          <Setter Property="Margin" Value="5"/> 
          <Setter Property="Template"> 
           <Setter.Value> 
            <ControlTemplate TargetType="ToggleButton"> 
             <Border Name="border" 
               BorderThickness="1" 
               Padding="4,2" 
               BorderBrush="DarkGray" 
               CornerRadius="3" 
               Background="{TemplateBinding Background}"> 
              <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /> 
             </Border> 
             <ControlTemplate.Triggers> 
              <Trigger Property="IsMouseOver" Value="True"> 
               <Setter TargetName="border" Property="BorderBrush" Value="Black" /> 
              </Trigger> 
              <Trigger Property="IsChecked" Value="true"> 
               <Setter TargetName="border" Property="Background" Value="Red"/> 
              </Trigger> 
             </ControlTemplate.Triggers> 
            </ControlTemplate> 
           </Setter.Value> 
          </Setter> 
         </Style> 
        </ToggleButton.Style> 
       </ToggleButton> 
      </ControlTemplate> 
     </RadioButton.Template> 
    </RadioButton> 
+0

然後運只需要複製該控制您發佈的主題模板取代了ToogleButton。 –

+0

我已經將xaml解決方案也添加到了答案中。 –