我需要做出與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