2016-09-08 36 views
1

你好,我正在WPF应用程序上工作,我用一个进度条来显示下载进度。这里是我的代码:windows 7上的进度条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机器它的工作原理完全为它假想看起来像这样:How it's supposed to look and it is the same in windows 10 但在Windows 7机器上它看起来像这样: on a windows 7 machine这是可怕的。任何人都可以帮助我找出为什么进度条看起来像那样在Windows 7上看起来完美的设计在Windows 10上

+0

可能是由于主题。尝试改变主题,看看它是否看起来不同。 – Jai

+1

我们如何在WPF中设置主题。请求的主题属性只存在于Windows 8及以上版本 –

+0

有了这种特定用途,我认为您应该为此组件定义自己的样式(或创建自定义控件!)。这里有一个很好的关于进度条风格的讨论:http://stackoverflow.com/questions/4815175/wpf-progressbar-style。但使用矩形的自定义控件很容易编码。 – Joe

回答

2

您需要在进度条中设置样式。实际情况是,WPF应用程序默认会根据操作系统为您的应用程序加载主题。所以,当你设置前景色属性

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