2009-06-24 23 views
30

Ich habe eine Reihe von Elementen in meinem XAML, die Foreground = "# 555" als die Farbe von verblasstem Text in einem schreibgeschützten Textfeld definieren.Wie kann ich eine Variable in XAML definieren und verwenden, um eine Farbe zu definieren?

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

Wie kann ich diesen Wert in einer XAML Variable und Referenz es in jedem Attribut, so dass ich es nur an einem Ort ändern?

Ich denke, Sie so etwas wie dieses tun können:

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

... 

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

Und was die Eigenschaft xmlns:sys=... Referenz für diese wäre?

+3

Sie stellen gute Fragen, Edward. Während du WPF lernst, taucht dein Name immer wieder auf ;-) –

Antwort

36

Versuchen Sie, Ihre Farbe als SolidColorBrush definieren:

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

...

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

Matt, ist der Grund, dass 'Color' nicht direkt als' StaticResource' verwendet werden kann, weil es ein Werttyp ist, kein Referenztyp? –

40

Manchmal müssen Sie können Farben definieren, anstatt Bürsten: (ein Fall, dass Sie dies sein möchte In diesem Fall könnten Sie sie einfach so definieren:

<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

Leider wirft die letzte Option "Fehler beim Erstellen eines 'System.Byte' aus dem Text '00'." auf Windows Phone. Der zweite funktionierte wie ein Zauber, Prost! –

+1

Und dann, um die Farbe zu verweisen verwenden Sie '{StaticResource Blue}' –

+2

@StephenHosking, nein, um die Farbe zu verweisen verwenden '{StaticResource ButtonColor1}' – Rocklan

Verwandte Themen