2009-07-28 45 views
11

Cuando visualizo una ventana de WPF con WindowStyle="None", se ve muy bien cuando uso areo.¿Cómo puedo eliminar el borde de una ventana de WPF cuando uso luna o clásico?

Sin embargo, cuando uso Luna o clásico, muestra un feo borde gris de unos 5 píxeles de ancho.

Por supuesto, si configuro ResizeMode="NoResize", este borde desaparece, pero me gustaría que la ventana se pueda cambiar de tamaño (ResizeMode="CanResize").

Otras aplicaciones que no son WPF (correo en vivo, es decir, Firefox, etc.) no muestran este borde gris, pero aún se pueden cambiar de tamaño.

¿Hay alguna manera de eliminar este borde sin dejar de cambiar el tamaño?

Respuesta

13

Estoy usando el WPF Customizable Window's Essential Window. Aquí está la declaración de mi ventana (abreviado):

<CustomWindow:EssentialWindow 
     xmlns:aero="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" 
     xmlns:CustomWindow="clr-namespace:CustomWindow;assembly=CustomWindow" 
     AllowsTransparency="True" Background="Transparent" 
     ResizeMode="CanResizeWithGrip" 
     WindowStyle="None" 
     ShowInTaskbar="True" > 
+0

Parece un proyecto genial. Nunca había oído hablar de eso antes. –

+0

Gracias por el puntero. Esta biblioteca es realmente genial. –

+0

El proyecto es genial, pero tiene algunos problemas, como las ventanas que cubren la barra de tareas cuando se maximiza. UseMicrosoft WPF Shell Integration Library en su lugar http://archive.msdn.microsoft.com/WPFShell –

10

Pruebe la configuración AllowsTransparency en True on the Window.

+0

Esto para la propina. Sin embargo, esa no es la respuesta, ya que AllowTransparency = true desactiva el cambio de tamaño. –

+1

Sí, pierde el cambio de tamaño de los bordes de la ventana, pero aún puede cambiar el tamaño con el agarre. Puede manejar el cambio de tamaño desde los bordes de la wnidow usted mismo, si está interesado puedo publicar el código. –

+1

@ JohnMyczek ¿podría publicar el código de la ventana de cambio de tamaño cuando AllowsTransparency se establece en True? – Tomas

4

Encontré una mejor respuesta. No hay necesidad de perder el tiempo con ResizeMode. Sin necesidad de llamadas interoperativas. No es necesario establecer AllowsTransparency, que puede tener efectos secundarios.

<WindowChrome.WindowChrome> 
<WindowChrome CaptionHeight="0" ResizeBorderThickness="5" /> 
</WindowChrome.WindowChrome> 

Tomé esta respuesta de este tema: How to create a WPF Window without a border that can be resized via a grip only?

puedo renovar aquí para las personas que aterrizan aquí en busca Google.

+2

¡La mejor respuesta! Con el soporte de winformshost –

Cuestiones relacionadas