У меня есть пользовательский элемент управления WinForms, в котором есть пользовательский список WPF. После того, как пользовательский элемент управления WinForms отключится, а затем снова включит элемент управления WPF в пользовательском контроле WinForms, он не отвечает. Кто-нибудь еще испытал это?
Нам пришлось взломать душу для удаления и повторного добавления узла элемента каждый раз, когда элемент управления отключен/включен, чтобы устранить проблему.
WinForms
wpfControl.Enabled = false;
...
wpfControl.Enabled = true;
Взломайте его для исправления в методе WinForms EnabledChanged для usercontrol
if ( Enabled )
{
ElementHost oldEh = ctlElementHost;
ElementHost eh = new ElementHost();
eh.Name = oldEh.Name;
oldEh.Child = null;
eh.Child = wpfControl;
this.Controls.Remove( ctlElementHost );
this.Controls.Add( eh );
eh.Dock = DockStyle.Fill;
oldEh.Dispose();
ctlElementHost = eh;
}
Кажется, что происходит утечка памяти, когда размещенные узлы элементов все еще торчат до тех пор, пока родительская форма, на которой размещается пользовательский контроль WinForms, не будет закрыта.