【问题标题】:WPF Styles: Styled BasedOn use global ColourWPF 样式:Styled BasedOn 使用全局颜色
【发布时间】:2015-10-29 22:57:23
【问题描述】:

我有一个改变按钮外观的样式,这个按钮可以是不同的颜色,但是,我通过使用 basedOn 属性并引用主按钮样式但更改背景颜色来做到这一点。见下文:

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

【问题讨论】:

    标签: wpf


    【解决方案1】:

    设法找到答案,其实很简单:/

    Color="{Binding Source={StaticResource NorGreen}, Path=Color}"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 2010-11-30
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多