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、具体代码示例
- <WrapPanel Orientation="Vertical">
- <ProgressBar x:Name="prbar0" Margin="20" Width="250" Value="50" Height="10" />
-
- <ProgressBar x:Name="prbar1" Margin="20" Width="250" Value="50" Height="10" BorderBrush="OrangeRed" BorderThickness="1" Background="DimGray"
- Maximum="100">
- ProgressBar>
- <TextBlock Margin="20 0" Foreground="#dddddd">
- <Run >prbar1 的Vaule值:Run>
- <Run Text="{Binding ElementName=prbar1, Path=Value}"/>
- TextBlock>
-
- <ProgressBar x:Name="prbar2" Margin="20" Width="250" Value="50" Height="10" BorderBrush="OrangeRed" BorderThickness="1" Background="DimGray"
- FlowDirection="RightToLeft" Maximum="100">
- ProgressBar>
- <TextBlock Margin="20 0" Foreground="#dddddd">
- <Run >prbar2 的Vaule值:Run>
- <Run Text="{Binding ElementName=prbar2, Path=Value}"/>
- TextBlock>
-
- <ProgressBar x:Name="prbar3" Margin="10" Width="10" Value="50" Height="120"
- Orientation="Vertical" FlowDirection="RightToLeft" Maximum="150">
- ProgressBar>
- <TextBlock Foreground="#dddddd">
- <Run >prbar3 的Vaule值:Run>
- <Run Text="{Binding ElementName=prbar3, Path=Value}"/>
- TextBlock>
-
- <Button Margin="10" Content="进度开始" Height="30" Click="Button_Click"/>
- WrapPanel>
后台模拟进度显示
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- Task.Run(() =>
- {
- for (int i = 0; i <= 100; i = i+5)
- {
- Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- prbar0.Value = i;
- prbar1.Value = i;
- prbar2.Value = i;
- prbar3.Value = i;
- }));
- System.Threading.Thread.Sleep(500);
- }
- });
- }
**************************************************************************************************************
4、效果图

**************************************************************************************************************
5、总结和扩展
我们可以使用Template属性进行,进度条的改写。
我们在后台更新ProgressBar时,要注意,使用异步更新界面,不然整个界面就会出现假死现象,不能操作。
改写ProgressBar模板样式示例: WPF 控件专题 自定义ProgressBar控件
**************************************************************************************************************