У меня есть Window
с одной кнопкой, нажмите кнопку " NewWindow
. NewWindow
пуст (для простоты) и имеет объект NewWindowViewModel
как DataContext
. NewWindowViewModel
вызывает метод (например, ExceptinMethod
), который может по выбору NewWindowViewModel
исключение. Я не хочу, чтобы показать NewWindow
на всех, если ExceptinMethod
throwns исключение, я хочу, чтобы показать некоторые MessageBox
"окно не может быть показано бла-бла..", например.
Каков наилучший подход к достижению этого?
Окно:
<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");
}
}