私の 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">
また、DataGrid といくつかのボタンとチェック ボックスを含む Grid が含まれています。
私の開発用コンピューターでは問題なく動作します。ただし、私のクライアントは、ダイアログ ウィンドウが閉じたときに、親ウィンドウの上に視覚的なごみとしてダイアログ ウィンドウが表示の一部を残しているのを見続けます。つまり、ShowDialog() が戻ったときに一部のウィンドウだけがアンドローされます。
this.InvalidateVisual(); を追加してみました。上記のコードの下にありますが、問題は解決しませんでした。
ここで (別の種類の WPF 表示の問題について) OnRender() を呼び出して再描画を強制するという提案も見ましたが、OnRender には DrawingContext 型のパラメーターが必要であり、取得方法がわかりません。
そこで、最初に表示の問題を修正する方法、または WPF を使用してウィンドウを再描画して回復する方法を誰かが知っているかどうかを尋ねています。
更新: 以下の提案された回答へのコメントに見られるように、クライアントのコンピューターで機能する解決策はまだありません。機能する唯一のことは、汚染された下にあるウィンドウを最小化および最大化することです。