Проблема с воздушным пространством: диалоговое окно DevExpress WPF появилось в фоновом режиме WPF, использующем WinFormsHost

#c# #wpf

#c# #wpf

Вопрос:

Я столкнулся с ужасной проблемой воздушного пространства (снова!). По сути, при нажатии кнопки я отображаю элемент управления диалогового окна над макетом WPF, в котором используется WindowsFormsHost, и диалоговое окно не всегда будет отображаться правильно! Иногда (когда diaplay искажается, то есть) Я вижу содержимое диалогового окна нормально, но кнопки OK-Cancel и строки заголовка исчезают!

Ниже показано, как я создаю и показываю диалоговое окно в обработчике событий нажатия кнопки:

 DXDialog dDialog = new DXDialog(culture.ShowingMenu_Customization, DialogButtons.OkCancel, true);
var result = dDialog.ShowDialog();
 

P.S: Я читал в другой теме, что следующий LOC устраняет эти проблемы, но где именно я должен подключить эти LOC? Я добавил их в конце моего ранее упомянутого click eventhandler, но разницы в результате не было.

 DispatcherFrame frame = new DispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(delegate(object parameter) {
        frame.Continue = false;
        return null;
    }), null);
Dispatcher.PushFrame(frame);
 

С уважением,
Рон.

Комментарии:

1. После того, как вы загрузите окно / диалоговое окно. Попробуйте изменить размер диалогового окна, добавив некоторые значения в Высоту и ширину, как в диалоговом окне. Высота = диалоговое окно. Фактическая высота 2; Это отчасти решит проблему.

2. @AyyappanSubramanian если я добавлю строку типа «dDialog. Высота = dDialog. Фактическая высота 2; «после»var результат = dDialog. ShowDialog();», выполнение фактически никогда не достигает 2-й строки, пока диалоговое окно не будет закрыто. Так что, похоже, это не совсем так работает.

3. Добавьте строку в dDialog. загруженное событие.

4. @AyyappanSubramanian — я уже делал что-то подобное, и это частично решает проблему. Добавление строк в dDialog. Загружено или dDialog. Активация не решает проблему, но делает это в dDialog. ContentRendered делает! Тем не менее, я получаю небольшой эффект мерцания / мерцания на экране — поскольку рендеринг сначала теряется из-за проблемы с воздушным пространством, а затем повторно отображается при регулировке высоты. Есть идеи, как я мог бы усовершенствовать решение и избавиться от этого мерцания?