如何自动关闭 Caliburn 对话框 window?
How to auto-close the Caliburn Dialog window?
我定义了一个 ViewModel
public class PlayerViewModel : Screen, IDiscoverableViewModel
我正在显示一个对话框弹出
var result = await _dialogManager.ShowDialogAsync(item, new List<DialogResult>() { DialogResult.Cancel });
此处 item 是另一个 ViewModel,它显示来自相关视图的 UI。此弹出窗口显示了一些信息,需要在几秒钟后自动关闭,以防用户没有 select 取消按钮。
以下是 10 秒后触发的计时器滴答事件。
void timer_Tick(object sender, EventArgs e)
{
this.DialogHost().TryClose(DialogResult.Cancel);
}
但它不起作用并抛出异常,因为 this.DialoHost() 总是变得空。我试过 this solution 但它正在关闭整个 ViewModel 而不是我只想关闭对话框 window.
您能否确认您的 'pop-up viewmodel' 是否来自 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();
}
}
我定义了一个 ViewModel
public class PlayerViewModel : Screen, IDiscoverableViewModel
我正在显示一个对话框弹出
var result = await _dialogManager.ShowDialogAsync(item, new List<DialogResult>() { DialogResult.Cancel });
此处 item 是另一个 ViewModel,它显示来自相关视图的 UI。此弹出窗口显示了一些信息,需要在几秒钟后自动关闭,以防用户没有 select 取消按钮。
以下是 10 秒后触发的计时器滴答事件。
void timer_Tick(object sender, EventArgs e)
{
this.DialogHost().TryClose(DialogResult.Cancel);
}
但它不起作用并抛出异常,因为 this.DialoHost() 总是变得空。我试过 this solution 但它正在关闭整个 ViewModel 而不是我只想关闭对话框 window.
您能否确认您的 'pop-up viewmodel' 是否来自 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();
}
}