2009-07-28 10 views
11

Quando visualizzo una finestra WPF con WindowStyle="None", sembra ottima quando si utilizza areo.Come posso rimuovere il bordo di una finestra WPF quando uso luna o classico?

Tuttavia, quando uso la luna o il classico, visualizza un bordo grigio brutto largo circa 5 pixel.

Ovviamente, se si imposta ResizeMode="NoResize", questo bordo scompare, ma vorrei ridimensionare la finestra (ResizeMode="CanResize").

Altre applicazioni non WPF (live mail, ad esempio, firefox, ecc.) Non visualizzano questo bordo grigio, ma sono comunque ridimensionabili.

C'è un modo per rimuovere questo bordo mentre è ancora ridimensionabile?

risposta

13

Sto usando il WPF Customizable Window's Essential Window. Ecco la mia dichiarazione finestra (abbreviato):

<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

Sembra un bel progetto. Non ne avevo mai sentito parlare prima. –

+0

Grazie per il puntatore. Questa libreria è davvero carina. –

+0

Il progetto è interessante, ma presenta alcuni problemi come le finestre che coprono la barra delle applicazioni quando ingrandite. UseMicrosoft WPF Shell Integration Library invece http://archive.msdn.microsoft.com/WPFShell –

10

Provare a impostare AllowsTransparency su True on the Window.

+0

Questo per la punta. Questa però non è la risposta, poiché AllowTransparency = true disabilita il ridimensionamento. –

+1

Sì, si perde il ridimensionamento dai bordi della finestra, ma è comunque possibile ridimensionare con il grip. Puoi gestire il ridimensionamento dai bordi di widowow, se sei interessato posso inserire il codice. –

+1

@JohnMyczek potresti pubblicare il codice della finestra di ridimensionamento quando AllowsTransparency è impostato su True? – Tomas

4

ho trovato una risposta migliore. Non c'è bisogno di scherzare con ResizeMode. Non c'è bisogno di chiamate interop. Non è necessario impostare AllowsTransparency che può avere effetti collaterali.

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

ho preso questa risposta da questa discussione: How to create a WPF Window without a border that can be resized via a grip only?

ho ripubblicare qui per le persone che sbarcano qui alla ricerca google.

+2

La migliore risposta! Con supporto winformshost –

Problemi correlati