WPF - 使用附加行为调整无边框窗口的大小,..任何建议?

时间:2010-09-28 19:25:23

标签: c# wpf interop resize attachedbehaviors

谁喜欢挑战?

我目前正在为ControlTemplate处理无格式Window,这将是可重用主题程序集的一部分。我希望移动,关闭,最小化和恢复的行为是隐式的,所以我已经为此功能编写了附加行为,然后我将其包含在模板中。

现在,..我来调整大小,我来到一个交界处。无论好坏,我正在处理行为中的鼠标移动并查找光标是否在调整大小的“区域”内。我已经足够适当地改变光标但是现在我已经实际调整了窗口大小,我遇到了三个选项。

我可以亲手控制这个事件并调整左边和右边。顶部和宽度&根据需要的高度。这是最简单的选项,使用附加行为很容易实现,但看起来中等重量提升,我明白WPF将继续渲染,因为窗口调整导致闪烁,...这很糟糕。

第二个选项是获取消息钩子并监听WM_NCHITTEST等,但到目前为止我找到的解决方案涉及到我的子类Window并且我不想强制主题的消费者使用非框架提供的任何控件。

最后一个选项是以某种方式在屏幕上绘制一个矩形,显示当拖动鼠标时Window会占用,然后在MouseUp上调整大小,这似乎可行,但它不是我以前做过的事情,所以有些指点很酷。

那么,......我该怎么办?到目前为止,Win32路线似乎是我最好的选择,但如果某人有一个“更纯粹”的解决方案,我宁愿不这样做。我很高兴获得有关选项3的建议以及.Net 4的任何建议,以防某些dynamic魔法成为可能。

提前致谢。

0 个答案:

没有答案