2017-03-05 74 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; 
    } 
}