若窗口的DataContext类构造函数抛出异常,则不显示窗口的最佳方式
本文关键字:窗口 显示 方式 最佳 抛出异常 DataContext 构造函数 | 更新日期: 2023-09-27 18:20:08
我有一个按钮的Window
,点击按钮打开NewWindow
。NewWindow
是空的(为了简单起见)并且具有作为DataContext
的NewWindowViewModel
对象。NewWindowViewModel
构造函数调用一个方法(例如ExceptinMethod
),该方法可以选择性地抛出异常。如果ExceptinMethod
引发异常,我根本不想显示NewWindow
,例如,我想显示一些MessageBox
"窗口无法显示blabla.."。
实现这一目标的最佳方法是什么?
窗口:
<Grid>
<Button Click="OpenNewWindow">Open new window</Button>
</Grid>
public partial class Window1
{
public Window1()
{
InitializeComponent();
}
private void OpenNewWindow(Object sender, RoutedEventArgs e)
{
var window = new NewWindow();
window.ShowDialog();
}
}
新窗口:
public NewWindow()
{
InitializeComponent();
DataContext = new NewWindowViewModel();
}
NewWindowViewModel:
public class NewWindowViewModel
{
public NewWindowViewModel()
{
ExceptinMethod();
}
private void ExceptinMethod()
{
// in fact optionally!
throw new Exception();
}
}
在您的示例中,只需按照以下更改代码
private void OpenNewWindow(Object sender, RoutedEventArgs e)
{
try
{
var window = new NewWindow();
window.ShowDialog();
}
catch(Exception)
{
MessageBos.Show("Constructor failed");
}
}