• WPF 控件专题 ProgressBar控件详解


    1、ProgressBar 介绍

        ProgressBar:进度条控件。

        WPF带有一个方便的控件用于显示进度,称ProgressBar。它的工作原理就是设置最小值和最大值然后通过递增一个值,这样就可以直观的显示当前进度情况。

    **************************************************************************************************************

    2、常用属性介绍

        Background:背景色;    BorderBrush:边框背景颜色;    BorderThickness:边框宽度;
        
        Foreground:前景色;    Width/Height:宽度/高度;    Visibility:可见性。
        
        FlowDirection:文本和其他用户界面 (UI) 元素在控制其布局的任何父元素内流动的方向。
        
        HorizontalAlignment/VerticalAlignment:在父元素中组合此元素时所应用的水平对齐特征/垂直对齐特征。
        
        HorizontalContentAlignment/VerticalContentAlignment:控件内容的水平对齐方式/垂直对齐方式。
        
        LayoutTransform:在执行布局时应该应用于此元素的图形转换方式。
        
        Margin:元素的外边距;    Maximun/MiniMun:元素控件范围最大值和最小值;
        
        Name:元素标识名称;    Opacity:透明度;
        
        Orientation:ProgressBar的方向:水平或垂直;
        
        RenderTransform:获取或设置影响此元素的呈现位置的转换信息。
        
        RenderTransformOrigin:获取或设置由 RenderTransform 声明的任何可能呈现转换的中心点,相对于元素的边界。
        
        Value:ProgressBar控件的当前数量。

    **************************************************************************************************************

    3、具体代码示例

    1. <WrapPanel Orientation="Vertical">
    2. <ProgressBar x:Name="prbar0" Margin="20" Width="250" Value="50" Height="10" />
    3. <ProgressBar x:Name="prbar1" Margin="20" Width="250" Value="50" Height="10" BorderBrush="OrangeRed" BorderThickness="1" Background="DimGray"
    4. Maximum="100">
    5. ProgressBar>
    6. <TextBlock Margin="20 0" Foreground="#dddddd">
    7. <Run >prbar1 的Vaule值:Run>
    8. <Run Text="{Binding ElementName=prbar1, Path=Value}"/>
    9. TextBlock>
    10. <ProgressBar x:Name="prbar2" Margin="20" Width="250" Value="50" Height="10" BorderBrush="OrangeRed" BorderThickness="1" Background="DimGray"
    11. FlowDirection="RightToLeft" Maximum="100">
    12. ProgressBar>
    13. <TextBlock Margin="20 0" Foreground="#dddddd">
    14. <Run >prbar2 的Vaule值:Run>
    15. <Run Text="{Binding ElementName=prbar2, Path=Value}"/>
    16. TextBlock>
    17. <ProgressBar x:Name="prbar3" Margin="10" Width="10" Value="50" Height="120"
    18. Orientation="Vertical" FlowDirection="RightToLeft" Maximum="150">
    19. ProgressBar>
    20. <TextBlock Foreground="#dddddd">
    21. <Run >prbar3 的Vaule值:Run>
    22. <Run Text="{Binding ElementName=prbar3, Path=Value}"/>
    23. TextBlock>
    24. <Button Margin="10" Content="进度开始" Height="30" Click="Button_Click"/>
    25. WrapPanel>

    后台模拟进度显示

    1. private void Button_Click(object sender, RoutedEventArgs e)
    2. {
    3. Task.Run(() =>
    4. {
    5. for (int i = 0; i <= 100; i = i+5)
    6. {
    7. Application.Current.Dispatcher.BeginInvoke(new Action(() =>
    8. {
    9. prbar0.Value = i;
    10. prbar1.Value = i;
    11. prbar2.Value = i;
    12. prbar3.Value = i;
    13. }));
    14. System.Threading.Thread.Sleep(500);
    15. }
    16. });
    17. }

    **************************************************************************************************************

    4、效果图

    **************************************************************************************************************

    5、总结和扩展

        我们可以使用Template属性进行,进度条的改写。

        我们在后台更新ProgressBar时,要注意,使用异步更新界面,不然整个界面就会出现假死现象,不能操作。

        改写ProgressBar模板样式示例: WPF 控件专题 自定义ProgressBar控件

    **************************************************************************************************************

  • 相关阅读:
    甘特图组件DHTMLX Gantt用例 - 如何拆分任务和里程碑项目路线图
    C++11标准模板(STL)- 算法(std::upper_bound)
    qml保姆级教程一:布局组件
    Using lxd to do vlan test (by quqi99)
    计算机毕业设计 基于SSM的支教志愿者招聘系统的设计与实现 Java实战项目 附源码+文档+视频讲解
    RabbitMQ(六)延时队列
    java8 function接口浅析(个人见解,如有错误,还请指正)
    汽车租贷管理系统简单实现
    SSM - Springboot - MyBatis-Plus 全栈体系(十八)
    STM8的C语言编程(7)--16位定时器的中断应用
  • 原文地址:https://blog.csdn.net/BYH371256/article/details/125441759