我有一个像
定义的ViewModelpublic class PlayerViewModel : Screen, IDiscoverableViewModel
我正在显示一个弹出的对话框
var result = await _dialogManager.ShowDialogAsync(item, new List<DialogResult>() { DialogResult.Cancel });
此处 item 是另一个ViewModel,它显示相关View中的UI。此弹出窗口显示一些信息,需要在几秒钟后自动关闭,以防用户没有选择取消按钮。
以下是在10秒后被解雇的Timer tick事件。
void timer_Tick(object sender, EventArgs e)
{
this.DialogHost().TryClose(DialogResult.Cancel);
}
但是它没有工作并抛出异常,因为 this.DialoHost()总是变为null。我尝试了this solution,但它关闭了整个ViewModel,而我只想关闭对话框窗口。
答案 0 :(得分:1)
你能否确认你的'弹出式视图模型'是否来自Screen?如果是这样,TryClose应该工作。你能验证一下吗?关闭的示例代码。
public class CreatePersonViewModel:Screen
{
System.Timers.Timer _timer = new Timer(5000);
public CreatePersonViewModel()
{
_timer.Elapsed += (sender, args) =>
{
_timer.Enabled = false;
TryClose(true);
};
_timer.Start();
}
}