How to change settings of a base style from derived settings using BasedOn property

I have simple style with ControlTemplate OrangeButton, and I have created another style OrangeButton2 BasedOn OrangeButton. I am trying to change the border properties, but WPF doesn't render the new border style defined in OrangeButton2. I tried the opposite also, where OrangeButton is based on OrangeButton2, with no change. Any idea what is actually happening here, and how to make it correct.

   <Style x:Key="OrangeButton" TargetType="Button" >
      <Setter Property="OverridesDefaultStyle" Value="True"/>
      <Setter Property="Margin" Value="2"/>
      <Setter Property="FontFamily" Value="Verdana"/>
      <Setter Property="FontSize" Value="11px"/>
      <Setter Property="FontWeight" Value="Bold"/>
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="Button">
            <Border Name="border"
               BorderThickness="1"
               Padding="4,2"
               BorderBrush="DarkGray"
               CornerRadius="3"
               Background="{TemplateBinding Background}">
              <Grid >
                <ContentPresenter HorizontalAlignment="Center"
                                  VerticalAlignment="Center" Name="contentShadow" Style="{StaticResource ShadowStyle}">
                </ContentPresenter>
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Name="content"/>
              </Grid>
            </Border>                
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>

    <Style x:Key="OrangeButton2" TargetType="Button" BasedOn="{StaticResource OrangeButton}">
      <Setter Property="BorderBrush" Value="Red"></Setter>
      <Setter Property="BorderThickness" Value="1"></Setter>
    </Style>  
  </Window.Resources>

  <StackPanel HorizontalAlignment="Center">
    <Button Style="{StaticResource OrangeButton2}">Hello</Button>    
  </StackPanel>

Answers


It's not enough to define a BorderBrush, you will have to use it. In your ControlTemplate change

<Border Name="border"
    BorderThickness="1"
    Padding="4,2"
    BorderBrush="DarkGray"
    CornerRadius="3"
    Background="{TemplateBinding Background}">

to

<Border Name="border"
    BorderThickness="{TemplateBinding BorderThickness}"
    Padding="4,2"
    BorderBrush="{TemplateBinding BorderBrush}"
    CornerRadius="3"
    Background="{TemplateBinding Background}">

This will use the value you define for the Style.


Need Your Help

Call remoteForm to update only one div with onChange event

ajax function grails submit gsp

I want to update div contents upon entering data in a textField dynamically.

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.