2017-02-03 6 views
0

Ich bin ein Anfänger mit WPF. Ich möchte das gleiche wie css/sass machen. Ich möchte einige Definitionen wiederverwenden.WPF ResourceDictionary und Bindung

Hier möchte ich eine Farbdefinition in einem Element (z. B. Schaltfläche) wiederverwenden. Wenn ich mit „Static“ Bindung verwenden, erhalte ich die folgende Ausnahme bei der Ausführung:

„Eine nicht behandelte Ausnahme des Typs‚System.Windows.Markup.XamlParseException‘aufgetreten in PresentationFramework.dll Weitere Informationen:‚# FF8FA2AC‘ ist kein gültiger Wert für sterben Eigenschaft "Background". "

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        > 

    <Color x:Key="cyan3">#007ca9</Color> 
    <Color x:Key="mangenta2">#a8005c</Color> 
    <Color x:Key="wintergrey1">#e6ecf0</Color> 
    <Color x:Key="wintergrey2">#c3ced5</Color> 
    <Color x:Key="wintergrey3">#8fa2ac</Color> 
    <Color x:Key="wintergrey4">#506671</Color> 
    <Color x:Key="white">#FFFFFF</Color> 
    <Color x:Key="antrazit">#333333</Color> 

    <!-- Base style for button --> 
    <Style TargetType="Button" x:Key="btnStandard"> 
     <!--Setter Property="Background" Value="#8fa2ac"/--> 
     <Setter Property="Background" Value="{StaticResource wintergrey3}"/> 
     <Setter Property="Foreground" Value="#ffffff"/> 
     <Setter Property="Width" Value="150" /> 
     <Setter Property="Height" Value="30"/> 
    </Style> 
</ResourceDictionary> 

Wie kann ich mit vordefinierten Definitionen in anderen Elementen? Oder was ist falsch. Will ich 4 verschiedene Knopfarten „Standard“ definieren „IsFocused“, „IsDisabled“ und „IsHero (background = mangenta2“.

+0

'Background' keine Farbe ist, es ist ein' Brush' erklären Bürsten in Ressourcen (zB SolidColorBrush) und Wiederverwendung der Ressourcen in Ihrem Stile und Ansichten; btw, '' erstellt einen Pinsel aus "# 8fa2ac" Hex-Code – ASh

+0

Mögliche Duplikate von [Wie konvertiere ich eine Farbe in einen Pinsel in XAML?] (http://stackoverflow.com/questions/3309709/how-doi-i) eine Farbe in eine Pinsel-in-Xaml konvertieren – MikeT

Antwort

0

Sie die Background-Eigenschaft auf eine Brush setzen soll. Wenn Sie es zu einem SolidColorBrush stellen Sie einstellen können dann die Eigenschaft color dieses zu Ihrer Farbe Ressource wie folgt aus:.

<Style TargetType="Button" x:Key="btnStandard"> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <SolidColorBrush Color="{StaticResource wintergrey3}" /> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Foreground" Value="#ffffff"/> 
    <Setter Property="Width" Value="150" /> 
    <Setter Property="Height" Value="30"/> 
</Style>