我正在尝试在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();
这可以在我的机器上提供正确的结果,但是我如何获得轻松的访问放大系数,使其适用于人们使用的任何放大倍数?