C# 使用MVVM加载视图/用户控件时显示进度对话框:我应该使用哪些事件?

C# 使用MVVM加载视图/用户控件时显示进度对话框:我应该使用哪些事件?,c#,wpf,events,mvvm,C#,Wpf,Events,Mvvm,我想在打开需要一段时间才能打开的视图/用户控件时显示一个加载对话框。我知道我可以使用Loaded事件来关闭UI布局和显示后的对话框。我在下面显示的示例代码中这样做 我的问题是:在布局/加载过程开始时,是否有任何事件可以用类似的方式打开对话框 我可以从打开此视图的ViewModel中打开加载对话框,但这会扩展逻辑。此外,由于我使用消息传递(来自MvvmLight)向视图/用户控件发送信号以加载它,这将导致IMO的解决方案不干净。因此,有什么想法可以实现这一点吗 查看: <i:Interact

我想在打开需要一段时间才能打开的
视图
/
用户控件
时显示一个加载对话框。我知道我可以使用
Loaded
事件来关闭UI布局和显示后的对话框。我在下面显示的示例代码中这样做

我的问题是:在布局/加载过程开始时,是否有任何事件可以用类似的方式打开对话框

我可以从打开此
视图的
ViewModel
中打开加载对话框,但这会扩展逻辑。此外,由于我使用消息传递(来自MvvmLight)向
视图
/
用户控件
发送信号以加载它,这将导致IMO的解决方案不干净。因此,有什么想法可以实现这一点吗

查看

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Loaded">
        <i:InvokeCommandAction Command="{Binding ViewLoadedEventHandlerCommand}" />
    </i:EventTrigger>
</i:Interaction.Triggers>
    private ICommand viewLoadedEventHandlerCommand;
    public ICommand ViewLoadedEventHandlerCommand
    {
        get
        {
            if (viewLoadedEventHandlerCommand == null)
                viewLoadedEventHandlerCommand = new RelayCommand(() => Debug.WriteLine("MainView was loaded."));
            return viewLoadedEventHandlerCommand;
        }
    }

最简单的方法是在应用程序UI上使用覆盖控件,该控件在后台线程上加载时显示。这里有很多控件以及如何使用它们的示例。加载数据覆盖UI等时显示/隐藏覆盖