我需要做出与WindowStyle.None,AllowsTransparency = TRUE,等自定义窗口C#WPF - 自定义缩放
一个要求是一个自定义ResizeGrip控制。
我有这方面的工作与ResizeMode.CanResizeWithGrip,采取了一些代码从这里找到一个开源项目:Fluid Kit
参见“GlassWindow”类,如果你有兴趣。
做的工作,我呼吁ResizeGrip的MouseLeftButtonDown事件下面的代码:
NativeMethods.SendMessage(_interopHelper.Handle, WM.SYSCOMMAND, (IntPtr)((int)SC.SIZE + (int)sizingAction), IntPtr.Zero);
SizingAction被定义为:
enum SizingAction
{
West = 1,
East = 2,
North = 3,
NorthWest = 4,
NorthEast = 5,
South = 6,
SouthWest = 7,
SouthEast = 8,
}
它所有的工作,但我当您通过SouthWest(或任何左侧或顶部)调整大小时会注意到一些奇怪的现象。您可以看到WPF窗口重新绘制大小和位置更改(从顶部或左侧调整大小时总是会发生这种情况)。
如果您在任何窗口上使用默认窗口样式和调整大小模式尝试此操作,它就可以正常工作。除了XP之外,你必须有经典的主题。
有谁知道使用它的替代方案?或者一种方法来解决它?
我也张贴在MSDN论坛上的一些信息,在这里:MSDN Forums
PS - 您可以看到此行为的第一手资料,如果有人想使用svn结帐流体包,并通过设置的StartupUri =“GlassWindow /窗口1运行GlassWindow例子.xaml“在他们的示例项目中。
编辑:微软向我发送产品建议...
链接在这里如果任何人有类似的问题:
我也把一个例子这里如果您希望想尝试一下它的第一手:
乔纳森,即使我调整标准的Win32窗口,我也有这种奇怪;)... ... – Anvaka 2009-12-16 06:46:27
Anvaka必须在XP上,将你的主题改为经典来看看我的意思。在Vista和更高版本中,所有窗口都能工作,因为它们具有更高级的渲染功能我可以接受我的自定义窗口在XP上闪烁,但我的自定义窗口不得在Vista和更高版本上闪烁。 – jonathanpeppers 2009-12-22 20:12:44