参考地址:https://www.cnblogs.com/smiler/p/3282887.html
效果:
增加using System.Windows.Forms;
前台:
<Window.Resources>
<Style TargetType="{x:Type ProgressBar}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ProgressBar}">
<Grid MinHeight="14"
MinWidth="200">
<Border Name="PART_Track"
CornerRadius="10"
BorderBrush="Black"
BorderThickness="1"
Background="#FF57C7C9" />
<Border x:Name="PART_Indicator"
CornerRadius="10"
BorderBrush="Red"
BorderThickness="1"
HorizontalAlignment="Left">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0">
<GradientStop Color="Orange"
Offset="0" />
<GradientStop Color="Yellow"
Offset="0.5" />
<GradientStop Color="Orange"
Offset="1" />
</LinearGradientBrush>
</Border.Background>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<StackPanel>
<TextBlock x:Name="tb"
Height="23"></TextBlock>
<ProgressBar x:Name="pb"
Minimum="0"
Maximum="100"
Height="20"></ProgressBar>
<Button Content="click"
Width="72"
Height="23"
Click="Button_Click_1"></Button>
</StackPanel>
</Grid>
后台:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Thread thread = new Thread(new ThreadStart(() =>
{
for (int i = 1; i <= 100; i++)
{
pb.Dispatcher.Invoke(new MethodInvoker(() => pb.Value = i));
tb.Dispatcher.Invoke(new MethodInvoker(() => tb.Text = i + "%"));
Thread.Sleep(200);
}
}));
thread.Start();
}