继续聊WPF——进度条

来源:互联网 发布:linux mono 界面开发 编辑:程序博客网 时间:2024/05/21 08:46
 
ProgressBar控件与传统WinForm使用方法完全一样,我们只需关注:
Minimum——最小值,默认为0;
Maximum——最大值,默认为100.
Value——当前值。
 
关键是它的控件模板,因为系统的默认主题不好看,很多时候我们是需要自定义样式和模板。
老方法,先看定义:
  1. <span style="font-size:16px;">[TemplatePartAttribute(Name = "PART_Track", Type = typeof(FrameworkElement))]  
  2. [TemplatePartAttribute(Name = "PART_Indicator", Type = typeof(FrameworkElement))]  
  3. public class ProgressBar : RangeBase  
  4. </span>  

 
从类定义中看到,ProgressBar控件的模板有两个部分,我们在定义模板的时候用什么都可以,上面的定义指定是FrameworkElement,因此,只要是继承自FrameworkElement的都可以作为模板的一部分,重点是Name属性一定要和每个部分的名称对应,也就是说你定义的模板部件必须为PART_Track和PART_Indicator.
PART_Indicator是进度条增加指示的形状,即我们看到在滑动的部分;
PART_Track就是后面的背景层,也就是不动的那部分。
 
明白了这点就好办了。
 
  1. <span style="font-size:16px;"> <LinearGradientBrush x:Key="g1" StartPoint="0,0" EndPoint="1,1">  
  2.   <GradientStop Color="Orange" Offset="0"/>  
  3.   <GradientStop Color="Yellow" Offset="0.5"/>  
  4.   <GradientStop Color="Orange" Offset="1"/>  
  5.  </LinearGradientBrush>  
  6.  <Style  
  7.      TargetType="{x:Type ProgressBar}">  
  8.   <Setter Property="Template">  
  9.     <Setter.Value>  
  10.       <ControlTemplate TargetType="{x:Type ProgressBar}">  
  11.         <Grid MinHeight="14" MinWidth="200">  
  12.           <Border   
  13.             Name="PART_Track"   
  14.             CornerRadius="20"  
  15.             BorderBrush="Black"  
  16.             BorderThickness="1" Background="#FF57C7C9" />  
  17.           <Border   
  18.            x:Name="PART_Indicator"   
  19.            CornerRadius="16"   
  20.            BorderBrush="Red"   
  21.            BorderThickness="1"   
  22.            HorizontalAlignment="Left" >  
  23.            <Border.Background>  
  24.             <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">  
  25.              <GradientStop Color="Orange" Offset="0"/>  
  26.              <GradientStop Color="Yellow" Offset="0.5"/>  
  27.              <GradientStop Color="Orange" Offset="1"/>  
  28.             </LinearGradientBrush>  
  29.            </Border.Background>  
  30.           </Border>  
  31.         </Grid>  
  32.       </ControlTemplate>  
  33.     </Setter.Value>  
  34.   </Setter>  
  35. </Style>  
  36.   
  37.   
  38. </span>  

窗体上放一个ProgressBar控件

  1. <span style="font-size:16px;">  <ProgressBar x:Name="progressBar" Margin="173,113.5,178.187,137"  OverridesDefaultStyle="True" RenderTransformOrigin="0.5,0.5" Value="55">  
  2.    <ProgressBar.RenderTransform>  
  3.     <TransformGroup>  
  4.      <ScaleTransform/>  
  5.      <SkewTransform/>  
  6.      <RotateTransform/>  
  7.      <TranslateTransform/>  
  8.     </TransformGroup>  
  9.    </ProgressBar.RenderTransform>  
  10.    <ProgressBar.Foreground>  
  11.     <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">  
  12.      <GradientStop Color="#FF24EE27" Offset="0"/>  
  13.      <GradientStop Color="#FF5434AC" Offset="0.5"/>  
  14.      <GradientStop Color="#FFB371EA" Offset="1"/>  
  15.     </LinearGradientBrush>  
  16.    </ProgressBar.Foreground>  
  17.   </ProgressBar>  
  18.   
  19.   
  20. </span>  

 
 
 
 
0 0
原创粉丝点击