2016-11-10 36 views
1

をチェックしたときに私はそれをチェックしています、ボタンの背景色を変更する必要が1のRadioButton変更背景色

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

ToggleButtonに見えるように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

その後opが唯一コントロールをコピーする必要があります投稿したトピックのテンプレートをToogleButtonに置き換えてください。 –

+0

答えにもxamlソリューションを追加しました。 –