Я нуждаясь сделать пользовательский окно с WindowStyle.None, AllowsTransparency = истинный и т.д.C# WPF - пользовательские изменения размера
Одним из требований является контроль пользовательского ResizeGrip.
У меня есть эта работа с ResizeMode.CanResizeWithGrip, взяв с собой код из исходного открытого проекта находится здесь: Fluid Kit
Смотрите класс «GlassWindow», если вы заинтересованы.
Чтобы сделать эту работу, я звоню следующий код на событие MouseLeftButtonDown в ResizeGrip:
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 оформления заказа Fluid Kit и запустить GlassWindow пример, установив StartupUri = "GlassWindow/Window1 .xaml "в своем примере проекта.
EDIT: Microsoft сказала мне, чтобы отправить предложение продукта ...
Ссылки здесь, если у кого есть аналогичная проблема:
Я также положить пример здесь, если бы хотел бы попробовать это из первых рук:
Jonathan, у меня есть эта странность, даже если я изменяю стандартное окно Win32;) ... – Anvaka
Anvaka должен быть на XP, изменить свою тему на классику, чтобы понять, что я имею в виду. В Vista и выше все окна работают, потому что они имеют более продвинутые возможности рендеринга. Я могу принять мое пользовательское окно, мерцающее на XP, но мое пользовательское окно не должно мерцать на Vista и выше. – jonathanpeppers