Так что я просто learned, что мы можем поместить WPF UserControl
в окна Form
с помощью ElementHost
управления. Если этот элемент управления формой окон был удален, будет ли пользовательский элемент управления WPF тоже удален?Будет ли пользовательский элемент управления WPF удален, если он используется в форме Windows, которая будет удалена?
1
A
ответ
2
Если ваш WPF UserControl
равен IDisposable
, то да, в противном случае нет.
В исходном коде для Dispose
метода ElementHost
класса, который размещен в WPF UserControl
, вы можете увидеть это:
IDisposable child = this.Child as IDisposable;
if (child != null)
{
child.Dispose();
}
Что означает Child
будет утилизировать, если это IDisposable
.
Примечание
WPF не полагаться на IDisposable
интерфейс для очистки ресурсов. Но так как UserControl
будет использоваться в проекте Windows Forms в элементе управления ElementHost
, который поддерживает шаблон IDisposable
, вы можете положиться на шаблон IDisposable
, если вам нужно выполнить очистку некоторых ресурсов. Но если это проект WPF, вы должны использовать механизмы WPF для очистки ресурсов.
Это же. Все объектно-ориентированные языки программирования тоже. Пользовательское управление WPF одноразовое. – ebattulga
@ebattulga WPF UserControl по умолчанию не 'IDisposable' и не будет' Dispose'. Взгляните на это сообщение: [Правильная очистка пользовательских элементов WPF] (http://stackoverflow.com/questions/1550212/proper-cleanup-of-wpf-user-controls). Метод 'Dispose' элемента управления ElementHost проверяет, является ли' Child' 'IDisposable', а затем вызывает его метод' Dispose'. Поэтому, если вам нужно что-то «Dispose», вы должны реализовать интерфейс «IDisposable». –