2017-02-03 2 views
0

I # m новичок с WPF. Я хочу сделать то же самое, что и css/sass. Я хочу повторно использовать некоторые определения.WPF ResourceDictionary and Binding

Здесь я хочу повторно использовать определение цвета в элементе (например, кнопку). Если я использую связывание с «StaticResource», я получаю следующее исключение при запуске:

«Необработанное исключение типа„System.Windows.Markup.XamlParseException“произошло в PresentationFramework.dll Дополнительная информация:„# FF8FA2AC“ IST Kein gültiger Wert für умереть Eigenschaft "Фон". "

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

Как я могу использовать предопределенные определения в других элементах? Или что не так. Я хочу сделать определить 4 разных стилей кнопки «Стандартные», «IsFocused», «IsDisabled» и «IsHero (фон = mangenta2».

+0

'Background' не цвет, это' Brush' объявить кисти в ресурсах (например, SolidColorBrush) и использовать их в вашем стили и представления, btw, '<Свойство Setter =" Background "Value =" # 8fa2ac ">' создает кисть из шестнадцатеричного кода "# 8fa2ac" – ASh

+0

Возможный дубликат [Как преобразовать цвет в кисть в XAML?] (http://stackoverflow.com/questions/3309709/how-do-i- преобразовать-A-цвет-к-а-кисти-в-XAML) – MikeT

ответ

0

Вы должны установить свойство Background на Brush. Если вы установите его в SolidColorBrush вы можно затем установить свойство Color этого одного до вашего цвета ресурса, как это:.

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