2014-10-17 88 views
1

我使用以下ProgressBarStyleWPF进度矩形

<Style TargetType="{x:Type ProgressBar}"> 
<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type ProgressBar}"> 
      <Grid MinHeight="14" MinWidth="400" Background="{TemplateBinding Background}"> 
       <Border x:Name="PART_Track" CornerRadius="2" BorderThickness="1"> 
        <Border.BorderBrush> 
         <SolidColorBrush Color="#FFFFFF" /> 
        </Border.BorderBrush> 
       </Border> 
       <Border x:Name="PART_Indicator" CornerRadius="2" BorderThickness="1" HorizontalAlignment="Left" 
         Background="{TemplateBinding Foreground}" Margin="0,-1,0,1"> 
        <Grid ClipToBounds="True" x:Name="Animation"> 
         <Rectangle x:Name="PART_GlowRect" Width="200" HorizontalAlignment="Left" 
            Fill="#3399FF" Margin="0,0,0,0" /> 
        </Grid> 
       </Border> 
      </Grid>      
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 
<Setter Property="Foreground" Value="#404040"/> 
</Style> 

它工作正常,但我想在一次显示三个矩形用不同的颜色(左,中,右)的指示部分,如何我可以做到这一点吗?

+0

哪里你想要显示三个矩形吗?一张照片在这里真的很有帮助。但是,如果您想将指示器部件更改为三个矩形,则只需将两个更多添加到您的动画网格。 – qqbenq 2014-10-17 14:24:07

+0

我想将指示器部件更改为三个矩形,在动画网格中,当我在网格中添加两个多边形矩形时,新添加的矩形定义颜色不像“PART_GlowRect”那样移动。我想在进度条中同时移动三种颜色(左,中,右),就像当前移动一种颜色一样。任何帮助,将不胜感激。 – 2014-10-21 10:27:16

回答

3

你应该改变你的PART_GlowRect是一个Border代替Rectangle,并添加所需的矩形内是:

<Border x:Name="PART_Indicator" CornerRadius="2" BorderThickness="1" HorizontalAlignment="Left" 
     Background="{TemplateBinding Foreground}" Margin="0,-1,0,1"> 
    <Grid ClipToBounds="True" x:Name="Animation"> 
     <Border x:Name="PART_GlowRect" Width="150" HorizontalAlignment="Left" 
        Background="Transparent" Margin="0,0,0,0" > 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions> 
       <Rectangle Grid.Column="0" Fill="Red" /> 
       <Rectangle Grid.Column="1" Fill="Green" /> 
       <Rectangle Grid.Column="2" Fill="Blue" /> 
      </Grid> 
     </Border> 
    </Grid> 
</Border> 

这是怎么看起来像:

progressbar