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控件
**************************************************************************************************************