У меня есть стиль, который меняет внешний вид кнопки, эта кнопка может быть разных цветов, однако я делаю это, используя свойство basedOn и ссылаясь на стиль основной кнопки, но изменяя фон цвета. См ниже:WPF Стили: Styled BasedOn use global Цвет
<!--- Small Button Colours -->
<Style BasedOn="{StaticResource ButtonIcoSmall}" TargetType="Button" x:Key="BtnSmGreen">
<Style.Resources>
<SolidColorBrush Color="#FF5E8108" x:Key="colour1" />
<SolidColorBrush Color="#FF5E8107" x:Key="colour2" />
<SolidColorBrush Color="#FFA1D423" x:Key="colour3" />
</Style.Resources>
</Style>
Однако я не переехал эти цвета нашего стиля и в глобальный SolidBrushColour
тег, так что я могу использовать эти цвета в любом стиле, не вводя цвет снова, и чтобы сделать его проще изменить глобально.
<!-- Global Colour Scheme -->
<!-- Green -->
<SolidColorBrush Color="#FF8AB71C" x:Key="NorGreen" />
<SolidColorBrush Color="#FF5E8107" x:Key="DarGreen" />
<SolidColorBrush Color="#FFA1D423" x:Key="LigGreen" />
<!-- Grey -->
<SolidColorBrush Color="#FF434953" x:Key="NorGrey" />
<SolidColorBrush Color="#FF22252b" x:Key="DarGrey" />
<SolidColorBrush Color="#FF58616E" x:Key="LigGrey" />
<!-- Blue -->
<SolidColorBrush Color="#FF29A1D5" x:Key="NorBlue" />
<SolidColorBrush Color="#FF1F7297" x:Key="DarBlue" />
<SolidColorBrush Color="#FF36BBF5" x:Key="LigBlue" />
<!-- Red -->
<SolidColorBrush Color="#FFEE4E10" x:Key="NorRed" />
<SolidColorBrush Color="#FFAA3C12" x:Key="DarRed" />
<SolidColorBrush Color="#FFFF6F37" x:Key="LigRed" />
<!-- Global Colour Scheme END -->
Теперь, как я могу сослаться на глобальный цвет в моем стиле BasedOn, я попытался Colour="{StaticResource NorGreen}
это не работает, я предполагаю, в связи с типом данных. Ниже стиль, который использует эти цвета упаковывают вы хотите взглянуть на что:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<WrapPanel>
<Border Grid.Column="0"
CornerRadius="5 0 0 5"
BorderThickness="0"
Background="{DynamicResource colour1}"
Name="buttonIcon">
<WrapPanel>
<ContentPresenter Grid.Column="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="{TemplateBinding Margin}" />
</WrapPanel>
</Border>
<Border Grid.Column="0"
CornerRadius="0 5 5 0"
BorderThickness="0"
Background="{DynamicResource colour2}"
Name="buttonText" >
<TextBlock Text="{TemplateBinding Tag}"
FontSize="13"
Foreground="White"
Padding="{TemplateBinding Padding}" />
</Border>
</WrapPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource colour1}" TargetName="buttonText" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="{DynamicResource colour3}" TargetName="buttonText" />
<Setter Property="Background" Value="{DynamicResource colour3}" TargetName="buttonIcon" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>