views:

225

answers:

2

In Silverlight 4 it's possible to use implicit styling - and that is amazing! But what if I want to apply a style to all of my Buttons, CheckBoxes and RadioButtons (all inheriting from ButtonBase)? I can't set TargetType on the Style to ButtonBase - that doesn't work. Do I need to create a style to each of the 3 control types?

+2  A: 

http://www.silverlightshow.net/items/Implicit-Styles-in-Silverlight-4.aspx Try this

Shoaib Shaikh
OK so it's not possible :(Quote from the link: "Note, that the TargetType must match exactly for a typed style to be applied. For example, if you specify the Style’s Key, then it’s ok for the target element to be a subclass of the TargetType. But a typed style typically gets applied to elements which type matches exactly! This is done to prevent surprises. For example, you might have created a Style for all ToggleButtons in your application and you don’t want this style to be applied to any CheckBoxes (which derives from the ToggleButton)."
xamlgeek
yups that is the case to prevent unwanted surprises of inheritance.
Shoaib Shaikh
A: 

xamlgeek,

The following implicit styles work for me...

<Style x:Key="BaseStyle" TargetType="Control">
    <Setter Property="FontFamily" Value="{StaticResource FontFamily}" />
    <Setter Property="FontSize" Value="{StaticResource FontSize}" />
    <Setter Property="Foreground" Value="{StaticResource FontBrush}" />
</Style>
<Style x:Key="BaseStyleCentered" TargetType="Control" BasedOn="{StaticResource BaseStyle}">
    <Setter Property="VerticalAlignment" Value="Center" />
</Style>
<Style x:Key="CommonCheckBox" TargetType="CheckBox" BasedOn="{StaticResource BaseStyleCentered}">
    <Setter Property="Cursor" Value="Hand" />
</Style>
<Style x:Key="CommonCheckBoxBlue" TargetType="CheckBox" BasedOn="{StaticResource CommonCheckBox}">
    <Setter Property="Foreground" Value="CornflowerBlue" />
</Style>
<Style x:Key="CommonRadioButton" TargetType="RadioButton" BasedOn="{StaticResource BaseStyleCentered}">
    <Setter Property="Cursor" Value="Hand" />
</Style>
<Style x:Key="CommonButton" TargetType="Button" BasedOn="{StaticResource BaseStyleCentered}">
    <Setter Property="Cursor" Value="Hand" />
    <Setter Property="Padding" Value="10,0,10,0" />
    <Setter Property="MinWidth" Value="{StaticResource ButtonWidth}" />
    <Setter Property="MinHeight" Value="{StaticResource ButtonHeight}" />
</Style>

Good luck,

Jim

YinYangMe, YinYangMoney and FaceToFaceSoftware

Jim McCurdy