windows 7 WPF 上的进度条

progress bar on windows 7 WPF

您好,我正在开发 WPF 应用程序,我使用进度条来显示下载进度。这是我的代码:

<ProgressBar x:Name="DownloadProgress" Value="100" Maximum="100" Margin="2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Foreground="#FF222222" Background="Transparent" FlowDirection="RightToLeft" BorderThickness="0"/>

进度条的设计使其看起来像是在揭开某些东西,因此进度值从 100 开始到 0 结束。问题出在一台 windows 10 机器上,它完全按照预期的方式工作这个: 但是在 windows 7 机器上它看起来像这样: 这太可怕了。谁能帮我找出为什么 windows 7 上的进度条看起来像 windows 10

上的设计看起来很完美

您需要在进度条中设置样式。实际发生的是,WPF 应用程序默认情况下会根据 OS 为您的应用程序加载主题。因此,当您设置前景时 属性

<Grid x:Name="PART_Indicator" ClipToBounds="true" HorizontalAlignment="Left">
                            <Rectangle x:Name="Indicator" Fill="{TemplateBinding Foreground}"/>
                            <Rectangle x:Name="Animation" Fill="{TemplateBinding Foreground}" RenderTransformOrigin="0.5,0.5">
                                <Rectangle.RenderTransform>
                                    <TransformGroup>
                                        <ScaleTransform/>
                                        <SkewTransform/>
                                        <RotateTransform/>
                                        <TranslateTransform/>
                                    </TransformGroup>
                                </Rectangle.RenderTransform>
                            </Rectangle>
                        </Grid>

名为指示器的矩形引导模板填充,它为您提供了这种令人厌恶的颜色更改,将其更改为您喜欢的颜色,这应该可以解决问题。 所以你的更新代码将是:

<Grid x:Name="PART_Indicator" ClipToBounds="true" HorizontalAlignment="Left">
                            <Rectangle x:Name="Indicator" Fill="#FF222222"/>
                            <Rectangle x:Name="Animation" Fill="#FF222222" RenderTransformOrigin="0.5,0.5">
                                <Rectangle.RenderTransform>
                                    <TransformGroup>
                                        <ScaleTransform/>
                                        <SkewTransform/>
                                        <RotateTransform/>
                                        <TranslateTransform/>
                                    </TransformGroup>
                                </Rectangle.RenderTransform>
                            </Rectangle>
                        </Grid>