gpt4 book ai didi

c# - 如何在遵循 MVVM 设计模式的 WPF 应用程序中工作之前显示等待对话框?

转载 作者:行者123 更新时间:2023-12-03 10:20:57 24 4
gpt4 key购买 nike

我正在开发一个遵循 MVVM 设计模式的 WPF 应用程序。对于线程,我打算使用 Backgroundworker。从 View 模型中,我需要启动线程以执行耗时操作。请建议我如何在线程执行之前显示等待对话框。如果可能,请提供示例代码。
问候,
阿尼尔类

最佳答案

您可以向 ViewModel 添加一个属性,指示后台工作程序(或其他异步操作)正忙。

View 可以绑定(bind)绑定(bind)到此属性以显示进度条或其他忙碌指示器。

只需确保正确设置和重置属性即可。

编辑

有关在 WPF 中创建模式对话框的信息,请参阅此问题/答案:How do make modal dialog in WPF?

作为替代方案,您可以使用此设置(伪代码):

<Window>
<Grid>
<Grid x:Name="regularContent">
</Grid>
<Grid x:Name="Overlay" Visibility="Collapsed">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Progressbar Value="{Binding Path=Progress}" />
</StackPanel>
</Grid>
</Grid>
</Window>

后面的代码:
private void ShowPopup()
{
RegularContent.IsEnabled = false;
Overlay.Visibility = Visibility.Visible;
}

private void ClosePopup()
{
RegularContent.IsEnabled = true;
Overlay.Visibility = Visibility.Collapsed;
}

确保禁用常规内容以防止用户使用标签。

您可以使用相同的结构来屏蔽 View 的一部分,而不是像我所做的那样完全屏蔽它。

应该在 UI 线程上修改 ProgressBar 绑定(bind)到的 ViewModel 上的 Progress 属性。如果您正在使用将自动完成的后台工作程序,因为在 UI 线程上引发了 ReportProgress 事件。

如果您使用不同的方式创建工作线程,请确保使用调度程序更新 Progress 属性。

关于c# - 如何在遵循 MVVM 设计模式的 WPF 应用程序中工作之前显示等待对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14454274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com