2009-06-24 38 views
30

Tengo un número de elementos en mi XAML que definen Foreground = "# 555" como el color del texto descolorido en un cuadro de texto de solo lectura.¿Cómo puedo definir y usar una variable en XAML para definir un color?

<TextBlock Text="{Binding SingularModelClassFileTitle}" Margin="0 10 0 0"/> 
<TextBox Text="{Binding SingularModelClassFileName}" 
     HorizontalAlignment="Left" 
     IsReadOnly="True" 
     Foreground="#555" 
     Width="500"/> 
<TextBox 
VerticalScrollBarVisibility="Visible" 
AcceptsReturn="True"     
Width="500" 
Height="100" 
IsReadOnly="True" 
Foreground="#555" 
Text="{Binding SingularModelClassContent}" 
HorizontalAlignment="Left" 
Margin="0 0 0 20"/> 

¿Cómo puedo poner este valor en una variable XAML y referencia en cada atributo de modo que sólo tengo que cambiarlo en un solo lugar?

Estoy pensando que puede hacer algo como esto :

<sys:String x:Key="ReadOnlyTextColor">#555</sys:String> 

... 

    <TextBox Foreground="{StaticResource ReadOnlyTextColor}"/> 

Y lo que sería la referencia de la propiedad xmlns:sys=... para esto?

+3

Haces buenas preguntas, Edward. Mientras aprende WPF, su nombre aparece una y otra vez ;-) –

Respuesta

36

Trate de definir su color como SolidColorBrush:

<SolidColorBrush x:Key="ReadOnlyTextBrush" Color="#555555" /> 

...

<TextBox Foreground="{StaticResource ReadOnlyTextColor}" /> 
+0

Matt, ¿por qué 'Color' no se puede usar directamente como' StaticResource' porque es un tipo de valor, no un tipo de referencia? –

40

A veces puede que tenga que definir colores en lugar de pinceles: (uno de los casos le gustaría que esto es estar capaz de definir Degradados con parámetros de color) En ese caso, podría definirlos así:

<Color x:Key="ButtonColor1">Blue</Color> 
<Color x:Key="ButtonColor1">#AABBCC</Color> 
<Color x:Key="ButtonColor1" A="00" R="124" G="111" B="44"/> 
+2

Lamentablemente, la última opción arroja "Error al crear un 'System.Byte' del texto '00'." en Windows Phone. El segundo funcionó como un encanto, ¡salud! –

+1

Y a continuación, para hacer referencia al color, utilice '{StaticResource Blue}' –

+2

@StephenHosking, no, para hacer referencia al uso del color '{StaticResource ButtonColor1}' – Rocklan

Cuestiones relacionadas