WPF:为什么我的前景颜色在不同的OS下看起来不同

时间:2015-06-07 11:03:32

标签: wpf

我的WPF应用ListViewProgressBar。 我将此颜色定义为Foreground的{​​{1}}:

enter image description here

ProgressBar下我可以看到这种颜色,但在Windows 8下我可以看到不同的颜色:

enter image description here

所以我的问题是,是否有可能在所有操作系统中看到我的欲望颜色?

编辑:

这是我创建的风格:

Windows 7

这是我的<Style x:Key="CustomProgressBar" TargetType="ProgressBar" > <Setter Property="Foreground" Value="#FF15669E"></Setter> </Style>

ProgressBar

但颜色没有改变。

2 个答案:

答案 0 :(得分:3)

默认情况下,如果您没有为控件提供任何样式,WPF会选择系统颜色(基于操作系统)。如果要在所有操作系统中运行独特的样式,则必须覆盖控件的样式,并且必须将样式Xaml合并到应用程序中 对于Ex:

 <Style x:Key="ButtonStyle" TargetType="Button">
      <Setter Property="Background" Value="Red"/>
    </Style>

     <Button Style="{StaticResource ButtonStyle}" />

答案 1 :(得分:1)

这很简单,你只需要使用你的样式来修改Border,PART_Track网格和里面的矩形(这是整个控件的进度部分)。

这是一个例子,我将整个事物的背景变为白色,边框变黑 - 并且进度部分为蓝色:

<Style x:Key="CustomProgressBar" TargetType="ProgressBar" >            
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ProgressBar">
                <Border BorderBrush="Black" BorderThickness="1" Background="White" CornerRadius="0" Padding="0">
                    <Grid x:Name="PART_Track">
                        <Rectangle x:Name="PART_Indicator" HorizontalAlignment="Left" Fill="Blue" />
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

这在Windows 7或8之间不应有所不同!

所以白色背景: enter image description here

或者带有绿色背景:

<Border BorderBrush="Black" BorderThickness="1" Background="Green" CornerRadius="0" Padding="0">

enter image description here