Приложение с возможностью стыковки может сохранить рабочий стол с позициями всех окон, включая окна на отдельных мониторах.
Если сохраненный рабочий стол перезагружается, но один или несколько мониторов не подключены, приложениедолжен обнаружить это.У меня есть следующее:
...
Windows windows = Window.GetWindow(pane);
if (window != null)
{
PaneTookWindow = toolWindow = window.Content as PaneToolWindow;
if (toolWindow != null)
{
if (!AreaInScreenBounds(new Rect(toolWindow.Left, toolWindow.Top, toolWindow.Width, toolWindow.Height)))
{
pane.ExecuteCommand(ContentPaneCommands.ChangeToDocument);
}
}
}
...
private static bool AreaInScreenBounds(Rect area)
{
if (Application.Current != null && Application.Current.MainWindow != null)
{
Rect [] screeAreas = Application.Current.MainWindow.GetScreenAreas();
return screenAreas.Any(screen => screen.Contains(area));
}
return false;
}
Проблема в том, что этот метод не определяет, больше ли недоступен монитор, но находится ли область за пределами области главного окна.
Кто-нибудьзнаете, как обнаружить отключенный монитор или недоступную область?