Winforms WPF Interop - элементы управления Wpf оказываются неактивными - PullRequest
4 голосов
/ 11 августа 2010

У меня похожая проблема с этим вопросом относительно рисования элементов управления wpf

Приложение, над которым я работаю, представляет собой довольно большое приложение с многопоточными формами Windows с несколькими пользовательскими элементами управления wpf в приложении.Проблема возникает в плагине приложения, в котором сторонняя библиотека c ++ вызывается в отдельном потоке, WndProc переопределяется для получения обновлений прогресса от сторонней библиотеки.Мне еще предстоит определить точный сценарий, который вызывает проблему, но похож на вышеупомянутый вопрос, после нескольких запусков элементы управления wpf не в состоянии рисовать и обновлять.

Установка ширины elementhosts действительно решает проблему рисования для большинства элементов управления, но после этого все элементы управления wpf в приложении кажутся «не отвечающими» - визуально ... индикаторы выполнения не показывают прогресс(хотя значение не меняется), полосы прокрутки не реагируют, выбор элемента в виде списка не выделяет его (он выделяется после изменения размера и фактически выбирается - вы можете видеть, что он выбран), древовидные представления не рисуютпосле изменения размера он показывает только черный фон, где должно быть древовидное представление (хотя, когда я нажимаю на элементы, где они должны быть в древовидном представлении, события действительно срабатывают)

Я знаю, что, вероятно, должен выяснитькорень проблем, которые вызывают это в первую очередь (это происходит довольно случайно, и его трудно поймать) - несмотря на то, что установка точки останова в методе WndProc действительно приводит к его сбою на обычной основе ...

ЧтоЯ надеялся, что это способ «реактивировать» / гобновить все остальные элементы управления в приложении ... Я являюсь промежуточным разработчиком wpf, c # и пока не знаю достаточно о сообщениях и событиях, которые происходят в фоновом режиме, чтобы эффективно их использовать ... я думаю, что какое-то событие или сообщениеэто говорит wpf перерисовать должен быть сломан или прерван или что-то - как я могу определить, что сломано и, возможно, активировать его ??

Любой совет будет высоко ценится ...

Спасибо

1 Ответ

0 голосов
/ 30 декабря 2011

Может случиться так, что событие, которое вызывает рендеринг графа управления WPF, никогда не обрабатывается из-за этого переопределения WndProc.

Поскольку вы взаимодействуете с WinForms, вы можете принудительно обработать события, выполнивзвонок на Application.DoEvents(); куда-нибудь.Возможно, после обновления индикатора выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...