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

时间:2014-05-10 12:41:51

标签: wpf mvvm loading

我试图制作一个" loading"覆盖以显示我的程序何时从在线数据库中获取数据。

加载发生在最开始时(启动时),但我有一些问题要显示我的叠加层。

在我的数据被提取时,似乎没有显示布局,因此无法显示叠加层。

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

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

    private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
    {
        this.DataContext = new MainViewModel();
        OverlayLoading.Visibility = Visibility.Hidden;
    }

重要提示:数据将在MainViewModel的构造函数中获取(我使用MVVM)

帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

您正在获取UI线程上的数据,这将阻止UI直到检索到数据,此时您根本不再需要显示叠加层。

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