用wpf写一个loading等待的界面,并加载完返回
时间: 2024-05-14 17:15:13 浏览: 194
以下是用WPF写一个简单的loading等待界面的示例代码:
MainWindow.xaml:
```xml
<Window x:Class="LoadingWindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Loading Window" Height="150" Width="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border Background="White" Opacity="0.8" Grid.RowSpan="2" />
<TextBlock Text="Please wait..." FontSize="20" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" />
<ProgressBar x:Name="ProgressBar" IsIndeterminate="True" Grid.Row="1" Margin="10" />
</Grid>
</Window>
```
MainWindow.xaml.cs:
```csharp
using System.Threading.Tasks;
using System.Windows;
namespace LoadingWindow
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Task.Run(() =>
{
// 模拟加载过程
System.Threading.Thread.Sleep(3000);
}).ContinueWith((task) =>
{
// 加载完成后关闭loading窗口
Dispatcher.Invoke(() =>
{
Close();
});
});
}
}
}
```
在MainWindow的构造函数中,我们订阅了Loaded事件,并在事件处理程序中使用Task.Run()方法模拟了一个长时间的加载过程。在加载完成后,我们使用Dispatcher.Invoke()方法在UI线程上关闭loading窗口。
使用这个loading窗口,只需要在需要加载的地方创建MainWindow实例并Show()即可:
```csharp
var loadingWindow = new MainWindow();
loadingWindow.Show();
```
阅读全文