C# 若窗口的DataContext类构造函数引发异常,则最好不要显示该窗口
我有一个按钮的C# 若窗口的DataContext类构造函数引发异常,则最好不要显示该窗口,c#,wpf,exception,constructor,viewmodel,C#,Wpf,Exception,Constructor,Viewmodel,我有一个按钮的窗口,点击按钮打开新窗口NewWindow为空(为简单起见),对象为DataContextNewWindowViewModel构造函数调用一个方法(例如,ExceptionMethod),该方法可以选择抛出异常。我根本不想显示新窗口如果异常方法出现异常,我想显示一些消息框“窗口无法显示bla bla..” 实现这一目标的最佳途径是什么 窗口: <Grid> <Button Click="OpenNewWindow">Open new window&l
窗口
,点击按钮打开新窗口
NewWindow
为空(为简单起见),对象为DataContext
NewWindowViewModel
构造函数调用一个方法(例如,ExceptionMethod
),该方法可以选择抛出异常。我根本不想显示新窗口
如果异常方法
出现异常,我想显示一些消息框
“窗口无法显示bla bla..”
实现这一目标的最佳途径是什么
窗口:
<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();
}
}
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");
}
}
请推荐投掷和捕捉一个特殊的例外尼斯。我喜欢。我用我自己的方法,你的方法更好。
private void OpenNewWindow(Object sender, RoutedEventArgs e)
{
try
{
var window = new NewWindow();
window.ShowDialog();
}
catch(Exception)
{
MessageBos.Show("Constructor failed");
}
}