2
我想在父窗口客户区的右上角放置一个模态对话框(进度窗口)。如何计算WPF中客户区域的偏移量?
该代码将把它放在非客户区域的角落,但是如何计算客户区域的偏移?
this.Owner=owner;
this.Left=owner.Left+owner.ActualWidth-Width;
this.Top=owner.Top;
编辑:
我发现这个 '解决方案',对正常的Windows的工作原理:
this.Left=owner.Left+owner.ActualWidth-Width-SystemParameters.ResizeFrameVerticalBorderWidth;
this.Top=owner.Top+SystemParameters.ResizeFrameHorizontalBorderHeight+SystemParameters.WindowCaptionHeight;
但这会失败已定制的边框窗口。
编辑:
的代码应该不管系统DPI设置(例如的120代替96)的工作。
谢谢,但此代码似乎只适用于设置为96 DPI的系统。也许这是一个WPF错误,但我需要它来处理120 DPI。 – laktak 2010-01-13 16:41:24
我忘了使用TransformFromDevice来包含缩放。我已将所需的代码添加到我的答案中,所以现在可以在任何DPI上使用。 – 2010-03-12 05:33:17
很好,谢谢。我只在windowContent有余量时才发现问题。在这种情况下,您还必须调整((FrameworkElement)windowContent).Margin的upperRightRelativeToContent。 – laktak 2010-03-15 09:45:10