В моем приложении WPF у меня есть окна WPF, которые могут открывать другие диалоговые окна WPF, что я делаю следующим образом:
PickForEveryone PickForEveryoneWindow = new PickForEveryone(sSelRecipe, selMRM.sDay, selMRM.MealTypeID);
PickForEveryoneWindow.Owner = this;
PickForEveryoneWindow.ShowDialog();
Где PickForEveryone определяется как:
public partial class PickForEveryone : Window
и
<Window x:Class="PFWb0.PickForEveryone"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit"
ShowInTaskbar="False"
Title="Pick Recipe For All" Height="536" Width="441"
WindowStartupLocation="CenterOwner">
И содержит сетку с сеткой данных и несколько кнопок и флажков.
, которая отлично работает на моих компьютерах для разработки.Однако мой клиент продолжает видеть, как диалоговые окна оставляют часть своего отображения в виде визуального мусора поверх родительского окна, когда диалоговое окно закрывается.То есть, только часть окна не разворачивается, когда ShowDialog () возвращает.
Я попытался добавить this.InvalidateVisual ();ниже приведенного выше кода, но это не решило проблему.
Я также видел здесь предложение (для другого вида проблемы отображения WPF) вызвать OnRender () для принудительной перерисовки, но OnRender требует параметртипа DrawingContext, который я не знаю, как получить.
Итак, я спрашиваю, знает ли кто-нибудь, как решить проблему с дисплеем в первую очередь или как исправить ее, получив WPF дляперерисовать окно.
Обновление: как видно из комментариев к предлагаемым ответам ниже, у меня все еще нет решения, которое работает на компьютерах моего клиента, и моего обходного пути (наличия окон, уклоняющихся друг от друга) больше не достаточно.Единственное, что работает, - это минимизировать и максимизировать загрязненное основное окно.