我试图制作一个" loading"覆盖以显示我的程序何时从在线数据库中获取数据。
加载发生在最开始时(启动时),但我有一些问题要显示我的叠加层。
在我的数据被提取时,似乎没有显示布局,因此无法显示叠加层。
我的猜测是元素将在" InitializeComponent()"之后显示。方法,但似乎并非如此。
public MainWindow()
{
InitializeComponent();
Loaded += OnLoaded;
}
private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
{
this.DataContext = new MainViewModel();
OverlayLoading.Visibility = Visibility.Hidden;
}
重要提示:数据将在MainViewModel的构造函数中获取(我使用MVVM)
帮助将不胜感激!
答案 0 :(得分:2)
您正在获取UI线程上的数据,这将阻止UI直到检索到数据,此时您根本不再需要显示叠加层。
您需要做的是从其他线程获取数据,从而允许UI在执行操作时显示加载覆盖。你应该看一下BackgroundWorker
- 它知道如何很好地处理这些场景(这些场景是在后台线程上执行操作并允许在保持响应的同时更新UI)。