Nuevo en Silverlight 4 Beta son los Estilos Implícitos, los cuales, nos permiten definir un estilo <Style> en el diccionario de recursos para que todos los elementos del tipo especificado en el atributo TargetType del estilo lo apliquen de manera automática sin necesidad de establecer la propiedad Style en cada uno de ellos.
Ejemplo
Tomemos en cuenta el siguiente Xaml:
<TextBox />
<TextBox />
<TextBox />
<TextBox />
</StackPanel>
En términos normales, los 4 TextBox se dibujarían con su comportamiento normal, es decir, se estirarían al ancho del StackPanel que los contiene, tendrían un alto fijo, etc.
Ahora bien, si definimos en el diccionario de recursos un Style que tenga el TargetType de tipo TextBox, entonces *todos* esos controles se estilizarían según las propiedades que definamos:
<Style TargetType="TextBox">
<Setter Property="Width"
Value="250" />
<Setter Property="Height"
Value="30" />
<Setter Property="Margin"
Value="0 0 0 5" />
<Setter Property="Background"
Value="Azure" />
</Style>
</UserControl.Resources>
Noten cómo no estoy establiendo x:Key ni x:Name para el estilo. Esto es requisito precisamente para los Estilos Implícitos. El resultado es el siguiente:
… sin necesidad de establecer el atributo Style=”….” en cada TextBox o utilizar el ImplicitStyleManager del Silverlight Toolkit!
Asimismo, podemos programáticamente obtener los datos del estilo en cuestión obteniéndolo del diccionario de recursos usando el tipo relacionado (el tipo que usamos en el atributo TargetType):
Style nuevoEstilo = this.Resources[typeof(TextBox)] as Style;
StringBuilder sb = new StringBuilder();
foreach (Setter item in nuevoEstilo.Setters)
{
sb.Append(string.Format("{0}", item.Value.ToString()));
sb.Append(Environment.NewLine);
}
MessageBox.Show(sb.ToString());
Resumen
Los Estilos Implícitos en Silverlight 4 nos permiten aplicar automáticamente (o ímplicitamente, de ahi su nombre) un estilo en todos los elementos de un mismo tipo, sin necesidad de usar el control ImplicitStyleManager (incluído en el Silverlight Toolkit) o establecer el atributo Style en cada elemento.