zoukankan      html  css  js  c++  java
  • 继续聊WPF——进度条

    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>  

     
     
     
     
  • 相关阅读:
    [Tensorflow2.0] 入门
    重新开始深度学习
    大秦小记三
    大秦小记二
    大秦小记一
    大秦小记初始篇
    js事件高级
    jsDOM
    css样式
    c#压缩文件和批量压缩文件
  • 原文地址:https://www.cnblogs.com/xieweikai/p/6832768.html
Copyright © 2011-2022 走看看