2016-09-08 37 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>