2009-07-28 13 views
11

Wenn ich ein WPF-Fenster mit WindowStyle="None" anzeigen, sieht es gut aus, wenn Sie areo verwenden.Wie kann ich den Rahmen eines WPF-Fensters entfernen, wenn Sie Luna oder Classic verwenden?

Wenn ich jedoch Luna oder klassisch verwende, wird ein hässlicher grauer Rand mit einer Breite von etwa 5 Pixel angezeigt.

Natürlich, wenn ich ResizeMode="NoResize" setze, verschwindet dieser Rahmen, aber ich möchte das Fenster in der Größe veränderbar sein (ResizeMode="CanResize").

Andere nicht WPF-Anwendungen (Live Mail, dh Firefox, etc.) zeigen diesen grauen Rahmen nicht an, sind aber immer noch in der Größe veränderbar.

Gibt es eine Möglichkeit, diesen Rahmen zu entfernen, während er noch in der Größe veränderbar ist?

Antwort

13

Ich benutze die WPF Customizable Window's Essential Window. Hier ist meine Fenster Deklaration (abgekürzt):

<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

Das sieht wie ein cooles Projekt aus. Ich hatte noch nie davon gehört. –

+0

Danke für den Zeiger. Diese Bibliothek ist in der Tat ziemlich cool. –

+0

Das Projekt ist cool, aber haben einige Probleme wie die Fenster, die die Taskleiste abdecken, wenn maximiert. Verwenden Sie die Microsoft WPF-Shell-Integrationsbibliothek stattdessen http://archive.msdn.microsoft.com/WPFShell –

10

Versuchen Sie die Einstellung AllowsTransparency auf True auf dem Fenster.

+0

Dies für den Tipp. Das ist jedoch nicht die Antwort, da AllowTransparency = true die Größenänderung deaktiviert. –

+1

Ja, Sie verlieren die Größenanpassung an den Fensterrändern, aber Sie können die Größe immer noch mit dem Griff ändern. Sie können die Größenanpassung von den Kanten selbst vornehmen, wenn Sie interessiert sind, kann ich den Code posten. –

+1

@JohnMyczek könnten Sie den Code für die Größenänderung Fenster veröffentlichen, wenn AllowTransparency auf True festgelegt ist? – Tomas

4

Ich fand eine bessere Antwort. Sie müssen sich nicht mit ResizeMode herumärgern. Keine Notwendigkeit für Interop-Anrufe. Es ist nicht erforderlich, AllowsTransparency zu setzen, was zu Nebenwirkungen führen kann.

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

nahm ich diese Antwort aus diesem Thread: How to create a WPF Window without a border that can be resized via a grip only?

ich es für die Menschen hier umbuchen, die hier eine Google-Suche landen.

+2

Beste Antwort! Mit winformshost Unterstützung –

Verwandte Themen