Ich habe eine angehängte Eigenschaft geschrieben, die ich in einem Fenster einstellen kann, um den Glasrahmen in den Clientbereich zu erweitern (unter Verwendung der DwmExtendFrameIntoClientArea
API). Es funktioniert in den meisten Fällen gut. Jetzt möchte ich mein Fenster ohne Rand sein, so dass ich die folgenden Attribute auf meinem Fenster:Vista-Glaseffekt auf einem randlosen WPF-Fenster aktivieren
WindowStyle="None"
ResizeMode="NoResize"
Background="Transparent"
u:WinUtil.EnableGlass="True"
ShowInTaskbar="False"
Aber mit diesen Attributen ist das Glas nicht zeigen: mein Fenster hat nur einen transparenten Hintergrund. Wenn ich ResizeMode
-CanResize
gesetzt, wird das Glas gezeigt, aber ich weiß nicht das Fenster der Größe veränderbar sein soll.
Ich vermute, dass es auf die Tatsache zurückzuführen ist, dass der Glaseffekt durch die Ausweitung des Nicht-Client-Rahmen in den Client-Bereich erhalten wird: mit WindowStyle = None
und ResizeMode = NoResize
, gibt es keinen nicht-Client-Rahmen ist, so gibt es nichts zu verlängern. Wenn ich die Größenänderung aktiviere, wird ein Rahmen um das Fenster herum erstellt, sodass der Rahmen erweitert werden kann.
Ich denke, es möglich sein sollte, um ein Fenster zu erstellen, die eine dünne Grenze hat, keine Titelleiste, und kann nicht geändert werden, indem die entsprechenden WS_ * Bits Einstellung, aber ich weiß nicht, was diejenigen genau
Also meine Fragen sind:
- Welche Stil-Bits gesetzt werden soll oder nicht gesetzt das gewünschte Aussehen und Verhalten haben?
- Wie kann ich die Style-Bits des Fensters initialisieren? Die Window-Klasse scheint nicht, etwas wie Windows
CreateParams
Eigenschaft Forms zu haben ... Ist es OK, um diese Bits zu setzen, nachdem der Griff erstellt wurde? - Ich fand die
HwndSource
Klasse, die eine Antwort auf Frage 2 sein könnte, aber es scheint ein bisschen komplex zu verwenden, wenn Sie kein Win32-Experte sind ... Wäre es eine vernünftige Lösung für mein Problem?
Jede Beratung ist willkommen
Es sieht vielversprechend aus, danke. Jetzt muss ich herausfinden, wie man es benutzt, aber es sieht nicht so schlecht aus;) –
Bisher kein Glück, mein Fenster bleibt verzweifelt schwarz ... –
OK, hab es geschafft ... Ich musste das 'CompositionTarget 'einstellen .BackgroundColor' zu 'Transparent' und' AllowsTransparency' zu True. Vielen Dank ! –