【问题标题】:WPF: why my foreground color looks difference under different OSWPF:为什么我的前景色在不同的操作系统下看起来不同
【发布时间】:2015-06-07 11:03:32
【问题描述】:

我有WPF 应用程序,里面有ListViewProgressBar。 我将此颜色定义为Foreground 到我的ProgressBar

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

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

编辑:

这是我创建的样式:

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

这是我的ProgressBar

<ProgressBar Name="prog" Maximum="100" Value="{Binding Progress}" 
             Width="{Binding Path=Width, ElementName=ProgressCell}" Background="#FFD3D0D0" Style="{StaticResource CustomProgressBar}"/>

但颜色没有改变。

【问题讨论】:

标签: wpf


【解决方案1】:

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

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

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

【讨论】:

  • 请看我的 ProgressBar 定义,我需要改变什么?
  • 您必须覆盖进度条控件的样式,而不是前景色或背景色。它只改变控件的颜色而不改变控件的样式
  • 请查看我的更新,我创建了新样式并将此样式添加到我的进度条中,但似乎有问题,因为这不起作用。
  • Verint 您必须更改进度条的样式和模板。进度条模板因操作系统而异。所以你应该定义一个通用的控件模板和样式,然后将这些样式键应用于进度条。
【解决方案2】:

很简单,你只需要用你的样式修改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 之间有所不同!

所以在白色背景下:

或带有绿色背景:

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

【讨论】:

  • 背景颜色呢?我尝试将其从白色更改为其他内容,但这仍然是白色
  • 在我的示例中,只需将 Background="White" 更改为 Background="Purple" (在样式的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-24
  • 2016-01-16
  • 2021-05-05
  • 2019-09-11
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多