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

UptoLike

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

74
наиболее простым подходом будет добавление в правый нижний угол
элемента захвата и изменения размера путем установки для свойства
ResizeMode значения CanResizeWithGrip. Однако при размещении такого
элемента предполагается, что окно имеет форму, напоминающую прямо-
угольную. Например, в случае создания окна с эффектом скругленных
краев за счет использования объекта Border, как было показано ранее на
рис. 17, такой прием может сработать. Элемент захвата и изменения раз-
мера появится в правом нижнем углу и, в зависимости от того, насколько
скругленным был сделан этот угол, разместится в пределах поверхности
окна, которому принадлежит. Но в случае создания окна более экзотиче-
ской формы с применением, например, элемента Path, как было показано
на рис. 18, такой подход не сработает, поскольку элемент захвата и изме-
нения размера возникнет в пустой области рядом с окном.
Если добавление элемента захвата и изменения размера не подходит
для окна данной формы или требуется разрешить пользователю изменять
размеры окна путем перетаскивания его краев, придется приложить не-
много дополнительных усилий. Технически имеется два основных подхо-
да для решения этой задачи. Первый использовать .NET-функцию вы-
зова платформы (PInvoke) для отправки сообщения Win32, изменяющего
размер окна, а второй просто отслеживать позицию курсора мыши при
перетаскивании пользователем окна в одну сторону и изменять размер
вручную установкой свойства Width. Ниже рассматривается пример при-
менения второго подхода.
Вне зависимости от используемого подхода, вначале необходимо
выполнить одно действие - придумать способ для определения момента
наведения пользователем курсора мыши на край окна. В WPF это легче
всего сделать, разместив вдоль каждого края окна некоторый специальный
элемент. Быть видимым этому элементу вовсе необязательно
фактически он даже может быть полностью прозрачным и единственной
его задачей является перехват событий мыши. Одним из лучших кандида-
тов на эту роль является элемент Rectangle, который представляет собой
элемент, прорисовывающий форму. Идеальным для этой задачи будет