我有一个带有 MS MVVM 工具包和 MahApps 的 C# WPF 应用程序。第一次打开窗口时,
ShowProgressAsync
按预期工作,这意味着 xaml 端的绑定也可以正常工作。但是,当我第二次尝试打开窗口时,它抛出任务被取消。如何解决这个问题?
IDialogCoordinator 是这样注册的
var col = new ServiceCollection();
col.AddSingleton<IDialogCoordinator, DialogCoordinator>();
col.AddSingleton<MyViewModel>(x =>
new MyViewModel(
x.GetRequiredService<IDialogCoordinator>()
));
Ioc.Default.ConfigureServices(col.BuildServiceProvider());
在 ViewModel 中
public class MyViewModel
{
private readonly IDialogCoordinator _dialogCoordinator;
public MyViewModel(IDialogCoordinator dialogCoordinator)
{
_dialogCoordinator = dialogCoordinator;
}
public async Task ShowMessageDialog()
{
// on Second time this throw task cancelled
var controller = await _dialogCoordinator.ShowProgressAsync(this, "Title", "Message");
// Do some stuff
await controller.CloseAsync()
}
}