2009-06-24 12 views
30

Ho un numero di elementi nel mio XAML che definiscono Primo piano = "# 555" come il colore del testo sbiadito in una casella di testo di sola lettura.Come posso definire e utilizzare una variabile in XAML per definire un colore?

<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"/> 

Come posso mettere questo valore in una variabile XAML e riferimento a ogni attributo in modo che ho solo cambiarlo in un unico luogo?

Sto pensando che si può fare qualcosa di simile :

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

... 

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

E quale sarebbe il riferimento di proprietà xmlns:sys=... per questo?

+3

Fai domande buone, Edward. Durante l'apprendimento di WPF, il nome viene visualizzato ripetutamente ;-) –

risposta

36

Prova definire il colore come un SolidColorBrush:

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

...

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

Matt, il motivo "Colore" non può essere utilizzato direttamente come "StaticResource" perché è un tipo di valore, non un tipo di riferimento? –

40

A volte potrebbe essere necessario per definire i colori, piuttosto che pennelli: (un caso si vorrebbe questo è essere in grado di definire sfumature con parametri di colore) In questo caso si può solo definirli in questo modo:

<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

Purtroppo, l'ultima opzione lancia "Impossibile creare un 'System.Byte' dal testo '00'." su Windows Phone. Il secondo ha funzionato come un fascino, evviva! –

+1

E quindi per fare riferimento al colore usare '{StaticResource Blue}' –

+2

@StephenHosking, no, per fare riferimento al colore usa '{StaticResource ButtonColor1}' – Rocklan

Problemi correlati