Weiterführende Themen: Erstellen von nicht rechteckigen Fenstern
In Microsoft Expression Blend-Anwendungen kann es gewünscht sein, ein Fenster zu erstellen, das zur Laufzeit als nicht rechteckige Form angezeigt wird. Beispiele hierfür finden sich bei Desktopapplets, Widgets und Media Playern. Zum Erstellen eines nicht rechteckigen Fensters müssen Sie zuerst einige Eigenschaften des Window-Elements in der Anwendung ändern. Erstellen Sie anschließend eine Ereignishandlermethode, die es Ihnen ermöglicht, das Fenster auch ohne eine Titelleiste zu verschieben.
Transparente Darstellung eines nicht rechteckigen Fensters
Wählen Sie im Panel Objekte undZeitachsen das Window-Element aus, und ändern Sie dann im Eigenschaftenpanel unter Darstellung die WindowStyle-Eigenschaft in Keine, um die Fenstershell (die Titelleiste) zu entfernen. Drücken Sie F5, um zu prüfen, wie das Fenster ohne Standardshell aussieht. Die Standardschaltflächen Minimieren, Maximieren, Wiederherstellen und Schließen sind nicht mehr sichtbar. Darüber hinaus können Sie das Fenster auch nicht mehr ziehen. Drücken Sie ALT+F4, um das Fenster zu schließen.
Hinweis: Weitere Informationen zu den anderen WindowStyle-Optionen finden Sie unter "WindowStyle" im Thema Windows Presentation Foundation-Fenster (Übersicht) in MSDN (möglicherweise in englischer Sprache).
Aktivieren Sie im Eigenschaftenpanel unter Darstellung das Kontrollkästchen AllowsTransparency. Der Fensterrahmen ist nun nicht mehr sichtbar.
Damit das Fenster transparent wird, können Sie im Eigenschaftenpanel unter Pinsel für die Background-Eigenschaft (Hintergrund) des Window-Elements Kein Pinsel festlegen. Wenn es dem Benutzer möglich sein soll, auf den nicht sichtbaren Bereich des Fensters zu klicken, können Sie alternativ für die Background-Eigenschaft (Hintergrund) die Einstellung Pinsel mit Volltonfarbe und dann für die Alpha-Eigenschaft des Hintergrundpinsels den Wert 1 festlegen. Hierdurch bleibt der klickbare Bereich des Fensters erhalten, ist jedoch nicht mehr sichtbar.
Doppelklicken Sie schließlich im Panel Objekte und Zeitachsen auf LayoutRoot, um das Element zu aktivieren, und fügen Sie dann Elemente aus dem Werkzeugpanel zur Zeichenfläche hinzu. Durch das Festlegen eines OpacityMask-Pinsels für ein Element können Sie verschiedene Effekte erstellen.
Weitere Informationen hierzu finden Sie unter Erstellen einer Deckkraftmaske.
Mithilfe von Zeichenwerkzeugen wie Ellipse und Zeichenstift können Sie außerdem Formen hinzufügen und Pfade zeichnen und diese Elemente dann hinter andere Elemente ziehen (klicken Sie mit der rechten Maustaste auf ein Element, und klicken Sie dann auf Sortieren). Die Kontur der Anwendung wird somit durch die Inhalte des LayoutRoot-Objekts definiert.
Drücken Sie erneut F5, um zu prüfen, wie das Fenster nun aussieht. Sie können das Fenster immer noch nicht ziehen. Drücken Sie ALT-F4, um das Fenster zu schließen.
Hinzufügen von Code, um das Ziehen des Fensters zur Laufzeit zu ermöglichen
Nachdem Sie das Fenster transparent gemacht haben, verlieren Sie ohne Titelleiste faktisch die Fähigkeit, die Fensterposition zu ändern. Damit das Fenster wieder verschoben werden kann, müssen Sie dem Fenster einen Ereignishandler hinzufügen und dann der zugehörigen CodeBehind-Datei einen kleinen Codeabschnitt hinzufügen.
Speichern Sie das Projekt auf der Festplatte, indem Sie im Menü Datei auf Alles speichern klicken. (Es ist nicht möglich, Ereignishandlermethoden zu einem Projekt hinzuzufügen, das noch nie gespeichert wurde.)
Klicken Sie, während das Window-Element im Panel Objekte und Zeitachsen ausgewählt ist, im Eigenschaftenpanel auf die Schaltfläche Ereignisse.
Geben Sie OnMouseLeftButtonDown neben MouseLeftButtonDown ein, und drücken Sie dann die EINGABETASTE.
Ändern Sie die generierte Ereignishandlermethode in der CodeBehind-Datei so, dass der Ereignishandler folgendermaßen aussieht:
private void OnMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { this.DragMove(); }
Private Sub OnMouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Me.DragMove() End Sub
Drücken Sie F5, um die Anwendung auszuführen.
Sie können weitere Ereignishandlermethoden hinzufügen, z. B. eine Methode für das Click-Ereignis einer Schaltfläche, die die Close()-Methode (Schließen) in der CodeBehind-Datei aufruft.
Weitere Informationen zum Erstellen von Ereignishandlermethoden finden Sie unter Schreiben von Code, der auf Ereignisse reagiert.