2011-11-28 127 views
1

我想创建一个简单的按钮:添加参数风格

<Style x:Key="ButtonStyle" TargetType="Button"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <Border CornerRadius="0" BorderThickness="1" BorderBrush="#83a5d2" x:Name="border"> 
        <Border.Background> 
         <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
          <GradientStop Color="#e8f1fe" Offset="0"/> 
          <GradientStop Color="#cbe1fe" Offset="0.5"/> 
          <GradientStop Color="#a3c7f1" Offset="0.50"/> 
          <GradientStop Color="#cceffe" Offset="1"/> 
         </LinearGradientBrush> 
        </Border.Background> 
        <ContentPresenter VerticalAlignment="Center" x:Name="contentPresenter"/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

但我怎么可以改变CornerRadius?我想能够传递一个属性到对象,以便对象具有该角半径。我无法使用模板绑定,因为Button没有名为CornerRadius的属性。

回答

1

要绑定的拐角半径要编程设定的值,你可以声明它在XAML中...

 <Style x:Key="ButtonStyle" TargetType="Button"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Button}"> 
         <Border CornerRadius="{Binding MyCornerRadius}" BorderThickness="1" BorderBrush="#83a5d2" x:Name="border"> 
          <Border.Background> 
           <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
            <GradientStop Color="#e8f1fe" Offset="0"/> 
            <GradientStop Color="#cbe1fe" Offset="0.5"/> 
            <GradientStop Color="#a3c7f1" Offset="0.50"/> 
            <GradientStop Color="#cceffe" Offset="1"/> 
           </LinearGradientBrush> 
          </Border.Background> 
          <ContentPresenter VerticalAlignment="Center" x:Name="contentPresenter"/> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

然后创建按钮(一个或多个)...

 <Button Style="{StaticResource ButtonStyle}" Content="Hello" DockPanel.Dock="Top" /> 

然后在后面的代码,您可以设置它...

public CornerRadius MyCornerRadius { get; set; } 
    public MainWindow() 
    { 
     InitializeComponent(); 
     DataContext = this; 
     MyCornerRadius = new CornerRadius(5, 6, 6, 5);    
    } 

而且这会给你以后的效果。

3

您可以直接在样式中使用“Border.CornerRadius”属性。为了简单起见,我跳过了大多数其他属性:

<Style x:Name="myBtnStyle" TargetType="{x:Type Button}"> 
    <Setter Property="FontWeight" Value="Normal" /> 
    <Setter Property="Border.CornerRadius" Value="3" /> 
    <!-- more... --> 
    <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
       <Border x:Name="bdContent" CornerRadius="{TemplateBinding Border.CornerRadius}"> 
         <ContentPresenter Content="{TemplateBinding Content}" /> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
+0

一个简单的技巧,忽略!谢谢 – YesMan85