の初期化子で「ShowDialogメソッド」を中止します:は、私はこのような別のダイアログを呼び出すボタンでメインウィンドウを持って、そのダイアログ
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();
は(すでに閉鎖されているダイアログを表示しようとしている)エラーを返します。これを行うための良い練習方法がありますか? dialog.ShowDialog();
に例外を発生させないthis.Close();
に電話する方法はありますか?
回避するのではなく、例外を修正することはできませんか? – SledgeHammer
@SledgeHammer例外は、ユーザーがExcelなどで開いた可能性のある.csvファイルを読み込もうとしたことによるものではありません。その場合、メッセージボックスを表示してから、このTableViewの読み込みを中止しようとしています。 – derekantrican
新しい/ ShowDialog呼び出しをメインフォームに置き換えてみましたか?そうすれば、ダイアログは正しく構築されず、表示されず、メインフォームからエラーボックスを表示することができます。もう一つの選択肢はあなたのコードを再構成してダイアログが "初期化されていない"状態で表示され、その上にエラーボックスが表示されますが、ユーザは2つのダイアログを閉じる必要があります。 – SledgeHammer