Кто мечтает о вызове?
В настоящее время я работаю над ControlTemplate
для бесхромного Window
, который будет частью многократно используемой тематической сборки. Я хочу, чтобы поведение для перемещения, закрытия, минимизации и восстановления было неявным, поэтому я написал прикрепленное поведение для этой функции, которое затем включил в шаблон.
Теперь ... Я пришел к изменению размера и пришел к перекрестку. Хорошо это или плохо, но я управляю движением мыши в поведении и нахожу, находится ли курсор внутри «зон» изменения размера. Я достаточно далеко, чтобы соответствующим образом изменить курсор, но теперь я действительно изменил размер окна, и я столкнулся с тремя вариантами.
Я мог бы навести порядок и отрегулировать левый и верхний угол и ширину и высоту по мере необходимости. Это самый простой вариант, и его легко достичь с помощью прикрепленного поведения, но он выглядит как умеренно тяжелый подъем, и я понимаю, что WPF будет продолжать рендеринг, когда окно отрегулировано, вызывая мерцание, что отстой.
Второй вариант - получить сообщение и прослушать WM_NCHITTEST и тому подобное, но решения, которые я нашел до сих пор, включают в себя подклассификацию Window
, и я не хочу заставлять потребителей темы использовать любые элементы управления, которые не предоставляются фреймворком.
Последний вариант - каким-то образом нарисовать прямоугольник на экране, показывающий, что Window
будет подниматься при перетаскивании мыши, а затем изменяет размер на MouseUp
, .., что кажется выполнимым, но это не то, что я сделано раньше, так что некоторые указатели на это было бы круто.
Итак, что мне делать? Маршрут Win32 пока кажется мне лучшим вариантом, но я бы предпочел, чтобы у кого-то было «более чистое» решение, которое работает. Я рад получить предложения с вариантом 3 и всем, вплоть до .Net 4 на случай, если возможно будет какое-то волшебство dynamic
.
Заранее спасибо.