0
初始化一個「的ShowDialog」我有一個按鈕,一個主窗口調用另一個對話框,如下所示:中止在該對話框
TableView dialog = new TableView();
dialog.ShowDialog();
在該視圖的xaml.cs構造它看起來是這樣的:
public TableView()
{
InitializeComponent();
this.tableViewModel = this.DataContext as TableViewModel;
this.tableViewModel.CloseAction += this.Close;
}
這當然,調用視圖模型的構造函數在那裏我遇到,有時異常。我已經在視圖模型的構造函數(try{}catch{}
)中處理了這個異常,但是目前TabeView仍然顯示(只是看起來不合適的東西)。爲了解決這個問題,我把在xaml.cs構造:
public TableView()
{
InitializeComponent();
this.tableViewModel = this.DataContext as TableViewModel;
this.tableViewModel.CloseAction += this.Close;
if (this.tableViewModel.ListOfViewModels == null)
this.Close();
}
但隨後dialog.ShowDialog();
返回一個錯誤(試圖表明已經關閉對話框)。對我來說,有沒有一種很好的練習方式?也許有一種方法可以調用this.Close();
,它不會在dialog.ShowDialog();
中拋出異常?
是不是可以修復異常而不是試圖解決它? – SledgeHammer
@SledgeHammer沒有例外來自嘗試讀取用戶可以在Excel中打開的.csv文件。所以如果是這樣的話,我試圖顯示一個消息框,然後中止加載這個TableView – derekantrican
你試過把try catch放在主窗體中的新/ ShowDialog調用上嗎?這樣,對話框將無法正確構建,並且不會顯示,您可以從主窗體中顯示錯誤框。另一種選擇是重構代碼,使對話框以「未初始化」狀態顯示,並在其上面顯示錯誤框,但用戶將不得不關閉2個對話框。 – SledgeHammer