У меня есть пользовательский контроль 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, не будет закрыта.