Классические элементы пользовательского интерфейса в Windows Presentation Foundation. Шамшев Ан. Б. - 59 стр.

UptoLike

Составители: 

58
ющую ситуацию: случайно было создано окно размером, который являет-
ся слишком большим для отображения на дисплее с низким разрешением.
Если речь идет о приложении с одним единственным окном, тогда
наилучшим решением будет создание окна с возможностью изменения
размеров. Если же речь идет о приложении с несколькими плавающими
окнами, то дело усложняется.
Можно попробовать просто ограничить позиции окна теми, которые
поддерживаются даже на самых маленьких мониторах, но такое решение,
скорее всего, будет неприемлемо для пользователей мониторов с большей
разрешающей способностью. Поэтому вероятнее всего придется прини-
мать решение о наилучшем размещении окна во время выполнения. А для
этого потребуется извлечь базовую информацию о доступном экранном
оборудовании с помощью класса System.Windows.SystemParameters.
Класс SystemParameters состоит из большого списка статических
свойств, которые возвращают информацию о различных параметрах си-
стемы. Например, его можно использовать для определения, включил ли
пользователь помимо всего прочего функцию «горячего» отслеживания
(hot tracking) и возможность перетаскивания целых окон. В случае окон
класс SystemParameters является особенно полезным, потому что пре-
доставляет два свойства, которые возвращают информацию о размерах те-
кущего экрана: свойство FullPrimaryScreenHeight и свойство FullPrima-
ryScreenWidth. Оба они довольно просты, что иллюстрирует показанный
ниже код, выполняющий центрирование окна во время выполнения:
double screenHeight = SystemParameters.FullPrimaryScreenHeight;
double screenWidth = SystemParameters.FullPrimaryScreenWidth;
this.Top = (screenHeight - this.Height) / 2;
this.Left = (screenWidth - this.Width) / 2;
Хотя этот код и эквивалентен применению свойства windowState со
значением CenterScreen, он предоставляет гибкость, позволяя реализовать
различную логику позиционирования и выполнять ее в подходящее время.
Второй вариант воспользоваться прямоугольником SystemParame-
ters.WorkArea для размещения окна в доступной области экрана. При вы-