Loading...正在加载中
效果图
代码
.xaml前端
<Image x:Name="run_image" Source="/CableMonitor;component/Images/MainInterface\第三次图标修改及添加\雷达盲区绘制图/加载2.png" Stretch="UniformToFill" Margin="0,0,115,0" Width="43" Height="28" HorizontalAlignment="Right" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5" >
</Image>
<Label Name="run_text" Content="正在加载,请稍后……" Margin="0,0,0,0" HorizontalAlignment="Right"/>
.xaml.cs后台
//在加载方法
//图片转动
DoubleAnimation da = new DoubleAnimation();
da.From = 0;
da.To = 360;
da.Duration = new Duration(TimeSpan.FromSeconds(3));
da.RepeatBehavior = RepeatBehavior.Forever;
RotateTransform rt = new RotateTransform();
run_image.RenderTransform = rt;
//rt.BeginAnimation(RotateTransform.AngleProperty, da);
//在加载方法 或者该页面中的新Thread(thSearch = new Thread(new ThreadStart(LoadCable)); thSearch.Start();)LoadCable方法里
//委托 调用开始图片转动
this.Dispatcher.Invoke(() =>
{
rt.BeginAnimation(RotateTransform.AngleProperty, da);
});
//加载完毕后,进度条隐藏
this.Dispatcher.Invoke(() =>
{
run_image.Visibility = Visibility.Collapsed;
run_text.Visibility = Visibility.Collapsed;
});
//点击该页面功能后卡住,重新加载进度条
//异步 再次显示Loading
await Task.Run(() =>
{
this.Dispatcher.Invoke(() =>
{
run_image.Visibility = Visibility.Visible;
run_text.Visibility = Visibility.Visible;
});
//加载完毕后,Loading消失
this.Dispatcher.Invoke(() =>
{
run_image.Visibility = Visibility.Collapsed;
run_text.Visibility = Visibility.Collapsed;
});
});
注意
根据情况,比如我的程序是开始太慢需要加载一次,加载完事后需要“正在加载,请稍后……”消失;
然后,该页面点击其他功能时卡住,需要继续在加载一次,该“正在加载,请稍后……”又重新出现,同理,当该功能加载完毕后,此进度条就消失即可;
这里根据我的程序情况,前面会分开写,同时运用到异步和委托,防止该进度条跟你加载内容同时卡住