2016-09-08 3 views
1

Привет, я работаю над приложением WPF, я использовал индикатор выполнения, чтобы показать ход загрузки. Вот мой код:индикатор выполнения на окнах 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. Вопрос находится на окнах 10 машины работает точно так же, как его воображаемые чтобы выглядеть так: How it's supposed to look and it is the same in windows 10 Но на машине с окнами 7 это выглядит так: on a windows 7 machine что ужасно. Может ли кто-нибудь помочь мне узнать, почему прогрессбар выглядит так, как на окнах 7, когда он выглядит идеально для проектирования на окнах 10

+0

Возможно, из-за тем. Попробуйте изменить тему и посмотреть, будет ли она выглядеть иначе. – Jai

+1

Как установить темы в WPF. свойство запрашиваемой темы существует только в Windows 8 и выше –

+0

С таким конкретным использованием, я думаю, вы должны определить свой собственный стиль (или создать собственный элемент управления!) для этого компонента. Здесь хорошо обсуждается стиль progressbar: 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> 

Прямоугольник ведет шаблон Fill, который дает вам это отталкивающее изменение цвета, что ваш любимый цвет и что следует сделать трюк. Таким образом, ваш обновленный код будет:

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