 |
|
|
|
Silverlight 4 Beta: Implicit Styles
|
|
|
 |
|
Location: Blogs Andy's Blog |
|
| Posted by: host |
11/18/2009 5:24 PM |
The ability to create Implicit Styles has been a sorely missed feature in Silverlight… until Silverlight 4! The concept of an implicit style is very simple – you define how you want ALL instances of a control to look in one place (you can then override those styles if you need to).
Setting an implicit style in XAML
Let’s say we want all of our TextBox controls in our application to have White text on a Red background. We can step into our App.xaml and add the following XAML:
<Application.Resources> <Style TargetType="TextBox"> <Setter Property="Background" Value="#FFFF0000"/> <Setter Property="Foreground" Value="#FFFFFFFF"/> </Style> </Application.Resources>
The key here is that we did NOT specify an x:Key value on the TextBox – only a TargetType. After this change, if we add a couple of TextBox controls to a UserControl, we’ll see the style take effect:
<StackPanel Width="100"> <TextBox Text="TextBox 1" /> <TextBox Text="TextBox 2" /> </StackPanel>

Of course, we can override a property that is styled if we wish – for example maybe we want to change the foreground colors of the TextBoxes to a color other than White:
<StackPanel Width="100"> <TextBox Text="TextBox 1" Foreground="Blue" /> <TextBox Text="TextBox 2" Foreground="Green" /> </StackPanel>

Creating Implicit Styles in Blend
To create an Implicit Style in Blend, right-click an element and select Edit Template/Edit a Copy or Edit Template/Create Empty.

… then select the “Apply to all” radio button option in the Create Style Resource dialog:

Some Limitations
Currently, Silverlight 4 does not support BasedOn styling for Implicit Styles. This is possible in WPF and allows for the “tweaking” of a style at a local scope. For example, you may define an Implicit style for a TextBox at the application level, but then want to tweak just a couple of properties of the style in a local scope (maybe a UserControl or Container). |
|
| Permalink |
Trackback |
|
|
 |
|
 |
|
|