2017-03-05 550 views
1

我在恢复Avalondock中的浮动工具时遇到了问题。 Im开发的应用程序使用avalondock进行文档管理,只需一些工具。 我通常在第二台显示器上使用这些工具。WPF C#多显示器恢复125%的位置缩放比例

我在工作时使用多个显示器,一个是125%缩放比例,另一个是100%缩放比例。主显示器是4k显示器,另一个是2k显示器。

当我用一台显示器(3440x1440)远程桌面工作电脑并运行应用程序时,我注意到第二台显示器中的工具不可见,我无法将它们带回主屏幕。

Avalondock的浮动LayoutAnocorables不被视为单独的视图。 如果有人知道如何使LayoutAnchorable作为单独的窗口视图,那将是最好的解决方案。但我找不到如何去做。我尝试以下

if (args.Model.IsFloating) 
{ 
    var left = (int)args.Model.FloatingLeft; 
    var top = (int)args.Model.FloatingTop; 
    var width = (int)args.Model.FloatingWidth; 
    var height = (int)args.Model.FloatingHeight; 
    var rect = new System.Drawing.Rectangle(left, top, width, height); 
    var intersected = Screen.AllScreens.Any(p => p.WorkingArea.IntersectsWith(rect)); 
    if (!intersected) 
    {        
     //need to reposition 
     args.Model.FloatingLeft = 0; 
     args.Model.FloatingTop = 0; 
    } 
    //args.Model.FloatingTop; 
} 

System.Windows.SystemParameters.PrimaryScreenHeight 1440 double 
System.Windows.SystemParameters.PrimaryScreenWidth 3440 double 
System.Windows.SystemParameters.VirtualScreenHeight 1440 double 
System.Windows.SystemParameters.VirtualScreenWidth 3440 double 

args.Model.FloatingLeft 4133.6双 args.Model.FloatingTop 909.6双

WorkingArea {X = 0 Y = 0宽度= 4300高度= 1750} System.Drawing.Rectangle 问题在于工作区域缩放为125%。 这使得args.Model在主窗口的范围内。

所以我想我不能使用System.Windows.Forms.Screen信息,因为我不知道用户将使用哪种缩放比例。

我如何获得多个显示器的真正分辨率和位置和缩放?

回答

0

我自己找到了答案。

我能够使浮动窗口的所有者为空。 显然,dock的floatwindow继承自System.Windows.Window 这就是我从一开始就想要的。

private void DockManager_LayoutUpdated(object sender, EventArgs e) 
{ 
    foreach (var floatingWindow in dockManager.FloatingWindows) 
    { 
     if (floatingWindow.Owner != null) 
     { 
      floatingWindow.Owner = null; 
     } 
     floatingWindow.ShowInTaskbar = true; 
    } 
}