2012-12-11 105 views
3

如何將單選按鈕樣式更改爲XAML中的按鈕樣式?如果檢查單選按鈕,如何設置背景顏色? 我想使用默認顏色(因爲我使用不同皮膚)。單選鈕按鈕樣式XAML

回答

5

您需要爲RadioButton定義controltemplate並在controltemplate中應用觸發器。就像是。

<Style x:Key="ButtonRadioButtonStyle" TargetType="{x:Type RadioButton}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type RadioButton}"> 
        <Button Content="{TemplateBinding Content}"/> 
        <ControlTemplate.Triggers> 
         <Trigger Property="HasContent" Value="true"> 
          <Setter Property="FocusVisualStyle" Value="{StaticResource CheckRadioFocusVisual}"/> 
          <Setter Property="Padding" Value="4,0,0,0"/> 
         </Trigger> 
         <Trigger Property="IsEnabled" Value="false"> 
          <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
         </Trigger> 
         <Trigger Property="IsChecked" Value="false"> 
          <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

並使用它。

<RadioButton Style="{DynamicResource ButtonRadioButtonStyle}"> 
      <Image Source="ImagePath\ABC.png"/> 
     </RadioButton> 

希望它可以幫助..

+0

是它的幫助謝謝!但現在,我想在我的單選按鈕中添加一個圖像(我想爲我的兩個radioButtons使用相同的樣式,但是使用兩個diffrents圖像)。如何將圖片設置爲我的風格(在按鈕上)的內容? – Ben

+1

@Ben: - 爲你編輯答案。 –

+0

我發現單擊按鈕時IsChecked屬性沒有更新。我用下面的定義'ToggleButton Content =「{TemplateBinding Content}」替換了一個按鈕ToggleButton IsChecked =「{Binding Path = IsChecked,Mode = TwoWay,RelativeSource = {RelativeSource TemplatedParent}}」/>',其中I找到更好的作品。 –

0

我經常使用這個選項

<RadioButton Height="23" Width="23" ToolTip="По левому краю" GroupName="TextAlignmentGroup" 
               IsChecked="{Binding IsChecked}"> 
    <RadioButton.Template> 
     <ControlTemplate TargetType="RadioButton"> 
      <Image Name="ImageName" Stretch="Fill"/> 
      <ControlTemplate.Triggers> 
       <Trigger Property="ToggleButton.IsChecked" Value="True"> 
        <Setter TargetName="ImageName" Property="Image.Source"> 
         <Setter.Value> 
          <BitmapImage UriSource="../../Resources/pressed.png"></BitmapImage> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
       <Trigger Property="ToggleButton.IsChecked" Value="False"> 
        <Setter TargetName="ImageName" Property="Image.Source"> 
         <Setter.Value> 
          <BitmapImage UriSource="../../Resources/image.png"></BitmapImage> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </RadioButton.Template> 
</RadioButton>