从Button标准模板创建RadioButton模板

时间:2014-02-23 14:42:06

标签: wpf templates

我正在我的公司开发WPF应用程序 我想创建一个RadioButton模板 我希望模板化的RadioButtons看起来像标准按钮 我希望一个经过检查的模板化RadioButton看起来像一个按下的标准按钮。

以下屏幕截图部分显示了一行3个RadioButtons,下面的行包含3个按钮 我想让我的模板让3个RadioButton看起来像3个按钮。

enter image description here

我已经阅读了一些有关模板创建的信息,但我不知道如何引用Button标准模板的部分内容 我不想通过绘制2D形状来重新创建Button标准模板的部分 如何在RadioButton模板中引用Button标准模板的部分?

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

您需要向Template提供Button RadioButton,您就可以了。

<StackPanel Orientation="Horizontal">
  <StackPanel.Resources>
     <Style TargetType="RadioButton">
       <Setter Property="Template">
       <Setter.Value>
         <ControlTemplate TargetType="RadioButton">
            <Border BorderThickness="{TemplateBinding Border.BorderThickness}"
                    BorderBrush="{TemplateBinding Border.BorderBrush}"
                    Background="{TemplateBinding Panel.Background}"
                    Name="border"
                    SnapsToDevicePixels="True">
              <ContentPresenter RecognizesAccessKey="True"
                             Content="{TemplateBinding ContentControl.Content}"
                             ContentTemplate="{TemplateBinding 
                                               ContentControl.ContentTemplate}"
                             ContentStringFormat="{TemplateBinding 
                                           ContentControl.ContentStringFormat}"
                             Name="contentPresenter"
                             Margin="{TemplateBinding Control.Padding}"
                             HorizontalAlignment="{TemplateBinding 
                                             Control.HorizontalContentAlignment}"
                             VerticalAlignment="{TemplateBinding 
                                             Control.VerticalContentAlignment}"
                             SnapsToDevicePixels="{TemplateBinding 
                                                  UIElement.SnapsToDevicePixels}"
                             Focusable="False" />
           </Border>
        </ControlTemplate>
       </Setter.Value>
      </Setter>
     </Style>
  </StackPanel.Resources>
  <RadioButton Content="First"/>
  <RadioButton Content="Second"/>
  <RadioButton Content="Third"/>
</StackPanel>

在StackPanel资源下创建默认样式,以便它自动应用于所有radioButtons。