WPF-启动时,元素何时显示在屏幕上?

WPF-启动时,元素何时显示在屏幕上?,wpf,mvvm,loading,Wpf,Mvvm,Loading,我试图制作一个“加载”覆盖图,以显示我的程序何时从在线数据库获取数据 加载发生在最开始的时候(当它启动时),但是我有一些问题要显示我的覆盖 在获取数据时,似乎没有显示布局,因此无法显示覆盖 我的猜测是,元素将显示在“InitializeComponent()”方法之后,但情况似乎并非如此 public MainWindow() { InitializeComponent(); Loaded += OnLoaded; } private v

我试图制作一个“加载”覆盖图,以显示我的程序何时从在线数据库获取数据

加载发生在最开始的时候(当它启动时),但是我有一些问题要显示我的覆盖

在获取数据时,似乎没有显示布局,因此无法显示覆盖

我的猜测是,元素将显示在“InitializeComponent()”方法之后,但情况似乎并非如此

public MainWindow()
    {
        InitializeComponent();
        Loaded += OnLoaded;
    }

    private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
    {
        this.DataContext = new MainViewModel();
        OverlayLoading.Visibility = Visibility.Hidden;
    }
重要提示:在MainViewModel的构造函数中获取数据(我使用的是MVVM)


谢谢你的帮助

您正在UI线程上获取数据,这将阻止UI,直到检索到数据,此时您不再需要显示覆盖

您需要做的是从不同的线程获取数据,从而允许UI在执行操作时显示加载覆盖。您应该看看-它知道如何很好地处理此类场景(这些场景在后台线程上执行操作,并允许在保持UI响应的同时更新UI)