2009-09-24 8 views
12

Ich lerne gerade WPF. Ich genieße es wirklich bis jetzt. Ich mag es, wie einfach es ist, großartige Apps zu erstellen, und möchte eine App mit einem benutzerdefinierten Fensterrahmen erstellen. Ich möchte es so etwas wie folgt aussehen:Erstellen von benutzerdefinierten Formularen in WPF?

Ich weiß, ich könnte nur leicht den Fenstertyp verändern keine Grenze haben und von dort aus gehen, aber das scheint viel wie WinForms. Wäre es nicht besser, nur eine Klasse zu erstellen, die von Window abgeleitet ist und es gestylt? Wenn ja, wie kann ich das tun? Vielen Dank!

Antwort

15

Hier ist ein großer Artikel über die Anpassung Window "Chrom" mit WPF:

Custom Window Chrome in WPF

Es wird von einem Code Gallery Projekt begleitet, von dem Sie den Code herunterladen können:

WPF Chrome

3

Um Nicht-Standard-Rahmen anzuzeigen, müssen Sie im Fenster AllowsTransparency = True und No Border festlegen. Ob du das in der Klasse machen willst, bleibt dir überlassen. Sie müssen im Grunde wissen, dass WPF eigentlich nur eine DirectX-Anwendung ist, die in einem Standardfenster gehostet wird. Also, wenn Sie nicht-Standard-Windows-Verhalten wollen, müssen Sie die Standard-Fensterrahmen löschen und starten Sie es neu verkabeln basierend auf den Standardfenster Ereignisse, die Sie behandeln möchten. Ziehen, minimieren/maximieren/wiederherstellen, Titelleiste.

Wirklich, es sollte nicht mehr als 30 Minuten bis zu einer Stunde dauern, um etwas mit etwas zu tun, was Sie wollen, und Sie könnten Ihr benutzerdefiniertes Fenster in eine Basisklasse für die Wiederverwendung auf der Straße setzen .

Ich habe das Gefühl, in den meisten Fällen wird dies die bessere und schnellere Option sein, als die Standard-Windows-Zeichnung zu überschreiben.

+0

Seien Sie vorsichtig mit der Zugänglichkeit usw., wenn Sie die Titelleiste des Standardfensters neu erfinden. Wie kann ein Tool zum Zugreifen wissen, wie man ein Fenster etc. schließt? Sie interessieren sich jedoch nicht für Ihre Bewerbung. –

0

Es gibt ein Produkt namens "Blendables", das ein ChromelessWindow-Steuerelement in seinem "Essentials Mix" Bundle enthält, was dies sehr einfach macht. Ich habe es nie selbst benutzt, ich weiß nur, dass es existiert und dachte es könnte nützlich sein. Als Minimum zeigt es, dass Sie das tun können, was Sie fragen, wenn Sie wiederverwendbares, templatables Chrom erstellen.

Verwandte Themen