childwindow が閉じられたときに確実にアンロードされるようにするにはどうすればよいですか?
ビューモデルから子ウィンドウを開いていますが、閉じた後も、コンボボックスで selectionchanged などのイベントが発生します。
childwindow は、呼び出されたのと同じビューモデルを使用しているため、イベントが発生する理由はそれで説明できると思います。アイテムソースは引き続き有効です。
しかし、閉じたら、子ウィンドウを永久に「処分」したいと思います。
このような Closed ハンドラーを追加しようとしました (デフォルト ビュー コード ビハインド):
private void OnLaunchEditItem(ItemMessage msg)
{
var editWnd = new EditItemWindow();
editWnd.Closed += new EventHandler(editWnd_Closed);
editWnd.Show();
}
void editWnd_Closed(object sender, EventArgs e)
{
sender = null;
}
成功なし..
だから私が今やっているのは、アイテムソースを子ウィンドウコントロールから削除することです。これは私には思えます...問題の理想的な解決策ではありません。閉じるときにメモリからすべてを破棄できるはずですか? (子ウィンドウの「表示」コード ビハインド)
private void OKButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
combobox1.ItemsSource = null;
combobox2.ItemsSource = null;
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
combobox1.ItemsSource = null;
combobox2.ItemsSource = null;
}