Мне нужно создать собственное окно с WindowStyle.None, AllowsTransparency = true и т. Д.
Одним из требований является пользовательский элемент управления 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,
}
Это все работает, но я замечаю некоторую странность, когда вы изменяете размер с юго-западной (или любой левой или верхней) стороны. Вы можете увидеть перерисовку окна WPF как для изменения размера, так и для изменения положения (что всегда происходит при изменении размера сверху или слева).
Если вы попробуете это для любого окна со стилем окна по умолчанию и режимом изменения размера, оно будет работать просто отлично. За исключением XP, вы должны иметь классическую тему.
Кто-нибудь знает альтернативу этому? Или способ это исправить?
Я также разместил некоторую информацию на форумах MSDN, здесь: Форумы MSDN
PS - Вы можете увидеть это поведение на собственном опыте, если кто-то захочет проверить комплект Fluid и запустить пример GlassWindow, установив StartupUri = "GlassWindow / Window1.xaml" в своем примере проекта.
РЕДАКТИРОВАТЬ: Microsoft сказал мне, чтобы отправить предложение продукта ...
Ссылка здесь, если у кого-то есть подобная проблема:
Предложения по продукту
Я также привожу здесь пример, если вы хотите попробовать это из первых рук:
Sample