Я столкнулся с этой проблемой некоторое время назад. Насколько я помню, это была ошибка, связанная с циклом сообщений WPF верхнего уровня, который плохо воспроизводился с циклом сообщений WinForms.
Решением, которое я использовал, было изменение моего внешнего слоя с окна WPF на форму WinForms. Другими словами, я заменил
new Window { Content = CreateContent(), Title = title }.Show();
с
new ElementHostForm(CreateContent(), title).Show();
используя такой класс:
class ElementHostForm : System.Windows.Forms.Form
{
ElementHost _host;
public WinFormsWindow(UIElement content, string title)
{
_host = new ElementHost { Child = content };
Controls.Add(host);
content.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
if(content.DesiredSize.Width > 100 && content.DesiredSize.Height > 100)
ClientSize = _host.Size =
new Size((int)content.DesiredSize.Width, (int)content.DesiredSize.Height));
content.ClearValue(FrameworkElement.WidthProperty);
content.ClearValue(FrameworkElement.HeightProperty);
Title = title;
}
protected override void OnResize(EventArgs e)
{
if(!ClientSize.IsEmpty) _host.Size = ClientSize;
base.OnResize(e);
}
}
Это обошло проблему, позволив WinForms иметь самый внешний цикл сообщений.
Это изменение было очень легким для меня, потому что у меня уже был мой контент верхнего уровня в отдельном UserControl (не в Window). Если ваш контент верхнего уровня является окном, вам может потребоваться рефакторинг.