Как я могу убедиться, что мое дочернее окно выгружено, когда оно закрыто?
Я открываю дочернее окно из моей модели просмотра, но после того, как оно закрыто, оно по-прежнему генерирует события, подобные выделению, измененному в выпадающих списках.
Дочернее окно использует ту же модель представления, из которой оно было вызвано, поэтому я думаю, это объясняет, почему запускаются события.Источники элементов по-прежнему действительны.
Но когда оно закрыто, я бы хотел "утилизировать" дочернее окно навсегда.
Я попытался добавить обработчик 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;
}
Никаких успехов ..
Итак, что я сейчас делаю, так это удалю источник элементов из дочерних элементов управления, что мне кажется ... не идеальным решениемк проблеме.Должна ли быть возможность избавиться от памяти при закрытии?(Детское окно "view" code-behind)
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;
}