2010-09-20 90 views
1

我创建了一个切换按钮样式,定义如下:继承/压倒一切的WPF风格

<Style TargetType="{x:Type ToggleButton}"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type ToggleButton}"> 
     <Border HorizontalAlignment="Center" VerticalAlignment="Center" x:Name="border" Padding="5,5,5,5" CornerRadius="5" Background="#FFBFACAC" BorderBrush="#FF000000" BorderThickness="1,1,1,1" SnapsToDevicePixels="True"> 
      <ContentPresenter x:Name="contentPresenter"/> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsChecked" Value="true"> 
      <Setter Property="Foreground" Value="White"/> 
      <Setter Property="Background" TargetName="border"> 
       <Setter.Value> 
       <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
        <GradientStop Color="#FF36587C" Offset="0.5"/> 
        <GradientStop Color="#FF122F53" Offset="1"/> 
       </LinearGradientBrush> 
       </Setter.Value> 
      </Setter> 
      </Trigger> 
      <Trigger Property="IsChecked" Value="false"> 
      <Setter Property="Foreground" Value="Black"/> 
      <Setter Property="Background" TargetName="border"> 
       <Setter.Value> 
       <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
        <GradientStop Color="LightGray" Offset="0.5"/> 
        <GradientStop Color="White" Offset="1"/> 
       </LinearGradientBrush> 
       </Setter.Value> 
      </Setter> 
      </Trigger> 
     </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

我有多个开关按钮,但我想办法改变他们的边框圆角半径。例如,我想让只有右边框的按钮四舍五入,或者一些没有圆角的按钮。

我是否需要为每种需要的舍入类型重新创建整个样式,其中每种样式的唯一区别是以下几行?

<Border HorizontalAlignment="Center" VerticalAlignment="Center" x:Name="border" Padding="5,5,5,5" CornerRadius="5" Background="#FFBFACAC" BorderBrush="#FF000000" BorderThickness="1,1,1,1" SnapsToDevicePixels="True"> 

由于圆角是控制模板的一部分,我不认为我能以某种方式改变只是一个模板的一部分在一个新的风格,而不包括所有的,但我不知道。

谢谢。

回答

0

另一种方法是创建一个从ToggleButton继承的自定义控件。

然后,您可以拥有一个名为CornerRadius的属性,并在该类的通用模板中对此属性执行TemplateBinding。

如果你打算在你的项目中使用“很多”的东西,有一些变化,那么自定义控件可能就是要走的路。它还将允许您稍后扩展属性的数量,以防您想进一步自定义。

2

您将需要创建整个样式来更改控件模板的一部分。我建议把它放到一个资源字典中,你可以将它作为窗口的一部分进行合并,以保持窗口(或控件)的XAML更清洁。

一个简单的方法是使用Blend - 添加所需的控件并右键单击它,然后选择“编辑模板”,编辑模板的副本。