WPF で実際にモーダル ポップアップを実装しようとしています。
透明なウィンドウと ShowDialog() でこれを行いました。ウィンドウは、マトリックス内の数百のコントロールのいずれかによってトリガーできます (以下の例では dm)。dm[r,c].tb は実際には TextBox コントロールです。
次のコードは、このトリックを問題なく実行する必要があります。
var location = dm[r, c].tb.PointToScreen(new Point(0, 0));
popupWindow.Left = location.X;
popupWindow.Top = location.Y - popupWindow.Height;
popupWindow.ShowDialog();
実際、ウィンドウはコントロールの右側と下に表示されていましたが、コントロールが下にあるほど、またはメイン ウィンドウの右側に表示されていました。
実際には正確に 1.5 倍オフセットされていることに気付くのにしばらく時間がかかりました。その理由は、重度の視覚障害者が、アクセスのしやすさの設定を使用して 150% の倍率でマシンを実行したためです。
私のマシンでは、これを考慮してコードを簡単に修正できます。
var location = dm[r, c].tb.PointToScreen(new Point(0, 0));
popupWindow.Left = location.X/1.5;
popupWindow.Top = location.Y/1.5 - popupWindow.Height;
popupWindow.ShowDialog();
これにより、私のマシンでは正しい結果が得られますが、アクセスしやすい倍率を取得して、人々が使用している倍率に関係なく機能させるにはどうすればよいですか?