c# - 在调用 ShowDialog 之后/期间使用异步值更新 ViewModel

标签 c# .net wpf async-await

我正在创建一个模态窗口,将其 DataContext 分配给我的 View 模型,然后调用 ShowDialog

var vm = new MyViewModel();  // implements INotifyPropertyChanged

// populate vm properties here

var window = new MyWindow(); // inherits from System.Windows.Window
window.DataContext = vm;
window.ShowDialog();

但是,我想从 async 方法的结果填充 View 模型的属性。

vm.Result = await provider.GetResultAsync();

我希望这些更改对窗口中的数据绑定(bind)属性可见。

我无法在调用 ShowDialog 之前执行此操作,因为只有在结果可用后才会调用 ShowDialog

在调用 ShowDialog 后我无法执行此操作,因为 ShowDialog 会阻塞,直到窗口关闭。

我该怎么做?

最佳答案

将此代码移动到 MyWindow 类中

然后在window_loaded()中

var vm = new MyViewModel();  // implements INotifyPropertyChanged

// populate vm properties here

this.DataContext = vm;

关于c# - 在调用 ShowDialog 之后/期间使用异步值更新 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61897452/

相关文章:

c# - 多线程并加快处理速度

c# - 将一个 Excel 文件中的不同工作表导出到不同的 pdf 文件中?

c# - C# 2.0 中的随机分钟数

c# - 可调整大小的网格列

c# - asp.net gridview 如果单元格行值相等则

c# - 为图片框中的每个像素绘制颜色

c# - 如何使用DataGridComboBoxColumn?

c# - AvalonDock 2.0 增加 handle 尺寸

c# - 第三方类未在 'using' 中加载。附加类安装在哪里?

c# - 将屏幕截图捕获为图像然后使用 ffmpeg 将图像转换为视频文件的时间应该是什么?