Расположение окон и простота увеличения доступа
Я пытаюсь реализовать то, что в действительности представляет собой модальное всплывающее окно в 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();
Это дает правильные результаты на моей машине, но как мне получить коэффициент увеличения легкости доступа, чтобы заставить его работать независимо от увеличения, которое используют люди?