WindowChrome-Klasse
Stellt ein Objekt dar, das die Anpassungen an den Nicht-Clientbereich eines Fensters beschreibt.
Vererbungshierarchie
System.Object
System.Windows.Threading.DispatcherObject
System.Windows.DependencyObject
System.Windows.Freezable
Microsoft.Windows.Shell.WindowChrome
Namespace: Microsoft.Windows.Shell
Assembly: Microsoft.Windows.Shell (in Microsoft.Windows.Shell.dll)
Syntax
'Declaration
Public Class WindowChrome _
Inherits Freezable
public class WindowChrome : Freezable
public ref class WindowChrome : public Freezable
type WindowChrome =
class
inherit Freezable
end
public class WindowChrome extends Freezable
Der WindowChrome-Typ macht die folgenden Member verfügbar.
Konstruktoren
Name | Beschreibung | |
---|---|---|
WindowChrome | Initialisiert eine neue Instanz der WindowChrome-Klasse. |
Zum Seitenanfang
Eigenschaften
Name | Beschreibung | |
---|---|---|
CanFreeze | Ruft einen Wert ab, der angibt, ob das Objekt als nicht änderbar festgelegt werden kann. (Von Freezable geerbt.) | |
CaptionHeight | Ruft die Höhe des Beschriftungsbereichs oben im Fenster ab oder legt diese fest. | |
CornerRadius | Ruft einen Wert ab, der den Betrag angibt, um den die Ecken eines Fensters abgerundet werden, oder legt diesen fest. | |
DependencyObjectType | Ruft den DependencyObjectType ab, der den CLR-Typ dieser Instanz umschließt. (Von DependencyObject geerbt.) | |
Dispatcher | Ruft den Dispatcher ab, der diesem DispatcherObject zugeordnet ist. (Von DispatcherObject geerbt.) | |
GlassFrameCompleteThickness | Ruft eine einheitliche Breite von -1 ab. | |
GlassFrameThickness | Ruft einen Wert ab, der die Breite des Glasrahmens um ein Fenster angibt, oder legt diesen fest. | |
IsFrozen | Ruft einen Wert ab, der angibt, ob das Objekt gegenwärtig änderbar ist. (Von Freezable geerbt.) | |
IsSealed | Ruft einen Wert ab, der angibt, ob diese Instanz derzeit versiegelt (schreibgeschützt) ist. (Von DependencyObject geerbt.) | |
NonClientFrameEdges | Ruft einen Wert ab, der angibt, welche Ränder des Fensterrahmens nicht im Besitz des Clients sind, oder legt diesen fest. | |
ResizeBorderThickness | Ruft einen Wert ab, der die Breite des Rahmens angibt, der zum Ändern der Größe eines Fensters verwendet wird, oder legt diesen fest. | |
UseAeroCaptionButtons | Ruft einen Wert ab, der angibt, ob Treffertests für die Windows Aero-Titelleistenschaltflächen aktiviert sind, oder legt diesen fest. |
Zum Seitenanfang
Angefügte Eigenschaften
Name | Beschreibung | |
---|---|---|
IsHitTestVisibleInChrome | Ruft einen Wert ab, der angibt, ob WPF-Treffertests für den Teil eines Elements im Nicht-Clientbereich eines Fensters aktiviert sind, oder legt diesen fest. | |
ResizeGripDirection | Ruft einen Wert ab, der die Richtung des Verhaltens des Ziehpunkts zur Größenänderung auf einem Eingabeelement angibt, oder legt diesen fest. | |
WindowChrome | Ruft die Instanz von WindowChrome ab, die an ein Fenster angehängt wird, oder legt diese fest. |
Zum Seitenanfang
Methoden
Name | Beschreibung | |
---|---|---|
CheckAccess | Bestimmt, ob der aufrufende Thread auf dieses DispatcherObject zugreifen kann. (Von DispatcherObject geerbt.) | |
ClearValue(DependencyProperty) | Löscht den lokalen Wert einer Eigenschaft.Die zu löschende Eigenschaft wird mit einem DependencyProperty-Bezeichner angegeben. (Von DependencyObject geerbt.) | |
ClearValue(DependencyPropertyKey) | Löscht den lokalen Wert einer schreibgeschützten Eigenschaft.Die zu löschende Eigenschaft wird mit einem DependencyPropertyKey angegeben. (Von DependencyObject geerbt.) | |
Clone | Erstellt einen änderbaren Klon der Freezable, indem tiefe Kopien von den Werten des Objekts erzeugt werden.Beim Kopieren von Abhängigkeitseigenschaften des Objekts kopiert diese Methode Ausdrücke (die jedoch möglicherweise nicht mehr aufgelöst werden können), jedoch keine Animationen oder ihre aktuellen Werte. (Von Freezable geerbt.) | |
CloneCore | Definiert die Instanz als Klon (tiefe Kopie) des angegebenen Freezable mit Basiseigenschaftswerten (nicht animiert). (Von Freezable geerbt.) | |
CloneCurrentValue | Erstellt einen änderbaren Klon (tiefe Kopie) von Freezable mit den aktuellen Werten. (Von Freezable geerbt.) | |
CloneCurrentValueCore | Definiert die Instanz mit aktuellen Eigenschaftswerten als änderbaren Klon (tiefe Kopie) des angegebenen Freezable. (Von Freezable geerbt.) | |
CoerceValue | Wandelt den Wert der angegebenen Abhängigkeitseigenschaft um.Für die Umwandlung wird eine vorhandene CoerceValueCallback-Funktion aufgerufen, die in den Metadaten der Abhängigkeitseigenschaft für das aufrufende DependencyObject angegeben ist. (Von DependencyObject geerbt.) | |
CreateInstance | Initialisiert eine neue Instanz der Freezable-Klasse. (Von Freezable geerbt.) | |
CreateInstanceCore | Erstellt eine neue Instanz der WindowChrome-Klasse. (Überschreibt Freezable.CreateInstanceCore().) | |
Equals | Bestimmt, ob ein angegebenes DependencyObject dem aktuellen DependencyObject entspricht. (Von DependencyObject geerbt.) | |
Finalize | Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.) | |
Freeze | Definiert das aktuelle Objekt als nicht änderbar und legt seine IsFrozen-Eigenschaft auf true fest. (Von Freezable geerbt.) | |
FreezeCore | Legt das Freezable-Objekt als nicht änderbar fest oder überprüft, ob es als nicht änderbar festgelegt werden kann. (Von Freezable geerbt.) | |
GetAsFrozen | Erstellt eine fixierte Kopie von Freezable mit Basiseigenschaftswerten (nicht animiert).Da die Kopie fixiert ist, werden alle fixierten Unterobjekte als Verweis kopiert. (Von Freezable geerbt.) | |
GetAsFrozenCore | Definiert die Instanz als fixierten Klon des angegebenen Freezable mit Basiseigenschaftswerten (nicht animiert). (Von Freezable geerbt.) | |
GetCurrentValueAsFrozen | Erstellt eine fixierte Kopie von Freezable mit aktuellen Eigenschaftswerten.Da die Kopie fixiert ist, werden alle fixierten Unterobjekte als Verweis kopiert. (Von Freezable geerbt.) | |
GetCurrentValueAsFrozenCore | Legt die aktuelle Instanz als fixierten Klon des angegebenen Freezable fest.Wenn das Objekt über animierte Abhängigkeitseigenschaften verfügt, werden die aktuellen animierten Werte kopiert. (Von Freezable geerbt.) | |
GetHashCode | Ruft einen Hashcode für dieses DependencyObject ab. (Von DependencyObject geerbt.) | |
GetIsHitTestVisibleInChrome | Ruft den Wert der angefügten IsHitTestVisibleInChrome-Eigenschaft vom angegebenen Eingabeelement ab. | |
GetLocalValueEnumerator | Erstellt einen spezialisierten Enumerator, mit dem bestimmt wird, welche Abhängigkeitseigenschaften dieses DependencyObject über lokal festgelegte Werte verfügen. (Von DependencyObject geerbt.) | |
GetResizeGripDirection | Ruft den Wert der angefügten ResizeGripDirection-Eigenschaft vom angegebenen Eingabeelement ab. | |
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) | |
GetValue | Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft in dieser Instanz eines DependencyObject zurück. (Von DependencyObject geerbt.) | |
GetWindowChrome | Ruft den Wert der angefügten WindowChrome-Eigenschaft aus dem angegebenen Window ab. | |
InvalidateProperty | Berechnet den effektiven Wert für die angegebene Abhängigkeitseigenschaft neu (Von DependencyObject geerbt.) | |
MemberwiseClone | Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.) | |
OnChanged | Wird aufgerufen, wenn das aktuelle Freezable-Objekt geändert wird. (Von Freezable geerbt.) | |
OnFreezablePropertyChanged(DependencyObject, DependencyObject) | Stellt sicher, dass entsprechende Kontextzeiger für einen gerade festgelegten DependencyObjectType-Datenmember eingerichtet werden. (Von Freezable geerbt.) | |
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) | Der Member unterstützt die Windows Presentation Foundation (WPF)-Infrastruktur und ist nicht für die direkte Verwendung im Code vorgesehen. (Von Freezable geerbt.) | |
OnPropertyChanged | Überschreibt die DependencyObject-Implementierung von OnPropertyChanged, um auch alle Changed-Handler als Reaktion auf eine Änderung einer Abhängigkeitseigenschaft vom Typ Freezable aufzurufen. (Von Freezable geerbt.) | |
ReadLocalValue | Gibt, sofern vorhanden, den lokalen Wert einer Abhängigkeitseigenschaft zurück. (Von DependencyObject geerbt.) | |
ReadPreamble | Stellt sicher, dass über einen gültigen Thread auf Freezable zugegriffen wird.Erben von Freezable müssen diese Methode am Anfang jeder API aufrufen, die Datenmember liest, bei denen es sich nicht um Abhängigkeitseigenschaften handelt. (Von Freezable geerbt.) | |
SetIsHitTestVisibleInChrome | Legt den Wert der angefügten Eigenschaft IsHitTestVisibleInChrome für das angegebene Eingabeelement fest. | |
SetResizeGripDirection | Legt den Wert der angefügten Eigenschaft ResizeGripDirection für das angegebene Eingabeelement fest. | |
SetValue(DependencyProperty, Object) | Legt den lokalen Wert einer Abhängigkeitseigenschaft fest, die über ihren Bezeichner angegeben wird. (Von DependencyObject geerbt.) | |
SetValue(DependencyPropertyKey, Object) | Legt den lokalen Wert einer schreibgeschützten Abhängigkeitseigenschaft fest, die über ihren DependencyPropertyKey-Bezeichner angegeben wird. (Von DependencyObject geerbt.) | |
SetWindowChrome | Legt den Wert der angefügten WindowChrome-Eigenschaft auf das angegebene Window fest. | |
ShouldSerializeProperty | Gibt einen Wert zurück, der angibt, ob Serialisierungsprozesse den Wert der bereitgestellten Abhängigkeitseigenschaft serialisieren sollen. (Von DependencyObject geerbt.) | |
ToString | Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.) | |
VerifyAccess | Erzwingt, dass der aufrufende Thread auf dieses DispatcherObject zugreifen kann. (Von DispatcherObject geerbt.) | |
WritePostscript | Löst das Changed-Ereignis für Freezable aus und ruft seine OnChanged-Methode auf.Von Freezable abgeleitete Klassen sollten diese Methode am Ende jeder API aufrufen, die nicht als Abhängigkeitseigenschaften gespeicherte Klassenmember ändert. (Von Freezable geerbt.) | |
WritePreamble | Stellt sicher, dass das Freezable nicht fixiert ist und dass über einen gültigen Threadkontext darauf zugegriffen wird.Erben von Freezable sollten diese Methode am Anfang jeder API aufrufen, die Datenmember schreibt, bei denen es sich nicht um Abhängigkeitseigenschaften handelt. (Von Freezable geerbt.) |
Zum Seitenanfang
Ereignisse
Name | Beschreibung | |
---|---|---|
Changed | Tritt auf, wenn Freezable oder ein darin enthaltenes Objekt geändert wird. (Von Freezable geerbt.) |
Zum Seitenanfang
Felder
Name | Beschreibung | |
---|---|---|
CaptionHeightProperty | Bezeichnet die CaptionHeight-Abhängigkeitseigenschaft. | |
CornerRadiusProperty | Bezeichnet die CornerRadius-Abhängigkeitseigenschaft. | |
GlassFrameThicknessProperty | Bezeichnet die GlassFrameThickness-Abhängigkeitseigenschaft. | |
IsHitTestVisibleInChromeProperty | Bezeichnet die IsHitTestVisibleInChrome-Abhängigkeitseigenschaft. | |
NonClientFrameEdgesProperty | Bezeichnet die NonClientFrameEdges-Abhängigkeitseigenschaft. | |
ResizeBorderThicknessProperty | Bezeichnet die ResizeBorderThickness-Abhängigkeitseigenschaft. | |
ResizeGripDirectionProperty | Bezeichnet die ResizeGripDirection-Abhängigkeitseigenschaft. | |
UseAeroCaptionButtonsProperty | Bezeichnet die UseAeroCaptionButtons-Abhängigkeitseigenschaft. | |
WindowChromeProperty | Bezeichnet die WindowChrome-Abhängigkeitseigenschaft. |
Zum Seitenanfang
Hinweise
Die WindowChrome-Klasse ermöglicht Ihnen, den Inhalt von Windows Presentation Foundation (WPF) in den Nicht-Clientbereich eines Fensters zu erweitern, das i. d. R. für den Fenster-Manager des Betriebssystems reserviert ist.
Standardfenster
Standardfenster bestehen aus zwei überlappenden Rechtecken. Das äußere Rechteck ist der Nicht-Clientbereich, der häufig als Chrombezeichnet wird. Es wird vom Fenster-Manager des Betriebssystem gezeichnet und verwaltet. Die Dimensionen werden durch Standardeinstellungen des Betriebssystems bestimmt. Der Nicht-Client-Frame bietet Standardfensterfunktionen und -verhaltensweisen. Dazu gehören Titelleistenschaltflächen (Minimieren, Maximieren und Schließen), der Fensterrahmen, Verhaltensweisen zum Ändern der Größe und zum Verschieben, das bzw. der Anwendungssymbol und -titel und das Systemmenü. Das innere Rechteck ist der Clientbereich. Es enthält den Inhalt der Anwendung und wird von der Anwendung gezeichnet und verwaltet. Weitere Informationen zu Fenstern in WPF-Anwendungen finden Sie unter Übersicht über WPF-Fenster.
Die folgende Abbildung zeigt die Teile eines Standardfensters.
Benutzerdefinierte Fenster
Sie können einen Fensterrahmen anpassen, indem Sie die Window.WindowStyle-Eigenschaft auf None festlegen oder die WindowChrome-Klasse verwenden.
WindowStyle.None
Eine Möglichkeit zum Anpassen der Darstellung eines WPF-Anwendungsfensters besteht darin, die Window.WindowStyle-Eigenschaft auf None festzulegen. Dadurch wird der Nicht-Client-Frame vom Fenster entfernt, sodass nur den Clientbereich übrigbleibt, auf den Sie ein benutzerdefiniertes Format anwenden können. Wenn jedoch der Nicht-Clientrahmen entfernt wird, verlieren Sie auch die bereitgestellten Systemfunktionen und -verhalten, z. B. Titelleistenschaltfläche und Größenanpassung von Fenstern. Ein anderer Nebeneffekt ist, dass das Fenster beim Maximieren die Windows-Taskleiste bedeckt. Das Festlegen von WindowStyle.None ermöglicht es Ihnen, eine vollständig benutzerdefinierte Anwendung zu erstellen, erfordert jedoch auch, dass Sie benutzerdefinierte Logik in Ihre Anwendung implementieren, um das Verhalten eines Standardfensters zu emulieren.
WindowChrome
Zum Anpassen eines Fensters unter Beibehaltung der Standardfunktionen können Sie die WindowChrome-Klasse verwenden. Die WindowChrome-Klasse trennt die Funktionalität des Fensterrahmens von grafischen Elementen, so können Sie die Grenze zwischen dem Client- und dem Nicht-Clientbereich des Anwendungsfensters steuern. Die WindowChrome-Klasse ermöglicht es Ihnen, WPF-Inhalt in den Fensterrahmen einzufügen, indem Sie den Clientbereich erweitern, um den Nicht-Clientbereich abzudecken. Gleichzeitig wird das Systemverhalten durch zwei nicht sichtbare Bereiche beibehalten: die Bereiche Rahmengröße ändern und Beschriftung.
Es gibt zwei wesentliche Teile beim Erstellen eines benutzerdefinierten Fensters mithilfe der WindowChrome-Klasse. Zuerst passen Sie den Nicht-Clientbereich des Fensters an, indem Sie die Eigenschaften festlegen, die im WindowChrome-Objekt verfügbar gemacht werden. Anschließend stellen Sie eine Vorlage für das Fenster bereit, das den Teil der Anwendung definiert, die in den Nicht-Clientbereich erweitert wird. Die Eigenschaften, die im WindowChrome-Objekt verfügbar gemacht wurden, sind ResizeBorderThickness, CaptionHeight, CornerRadius und GlassFrameThickness.
Die ResizeBorderThickness-Eigenschaft gibt einen nicht sichtbaren Rahmen um das Anwendungsfenster herum an, mit dem der Benutzer per Klicken und Ziehen die Größe des Fensters anpassen kann.
Die CaptionHeight-Eigenschaft gibt einen nicht sichtbaren Bereich am oberen Fensterrand an, der das Verhalten des Systems aktiviert, das normalerweise der Titelleiste zugeordnet ist. Zu diesen Verhaltensweisen zählen folgende: Ziehen/Ablegen zum Verschieben des Fensters, Doppelklicken zum Maximieren des Fensters und Klicken mit der rechten Maustaste zum Anzeigen des Systemmenüs.
Die Größenanpassung und der Beschriftungsbereich enthalten keine visuellen Elemente; sie definieren nur Bereiche, die auf Eingabe reagieren und standardmäßiges vom System bereitgestelltes Fensterverhalten ermöglichen.
Die CornerRadius-Eigenschaft gibt den Grad an, um den die Ecken des Fensters abgerundet werden. Diese Eigenschaft hat keine Auswirkungen, wenn der Glasframe für ein Fenster aktiviert ist.
Die GlassFrameThickness-Eigenschaft gibt die Breite des Glasframe um das Fenster an. Standardmäßig wird der Systemwert verwendet, der durch die WindowNonClientFrameThickness-Eigenschaft angegeben wird, um die Darstellung eines Standardfensters zu emulieren. Wenn der Glasframe verwendet wird, sind Titelleistenschaltflächen für Minimieren, Maximieren und Schließen sichtbar und interaktiv. Die Anwendung ist für die Anzeige des Anwendungssymbols und Beschriftungstexts verantwortlich. Sie können die GlassFrameThickness-Eigenschaft festlegen, um den Glasframe schmaler oder breiter als den Standard zu machen.
Vorsicht |
---|
Die Größe der Titelleistenschaltflächen ändert sich nicht, wenn die GlassFrameThickness-Eigenschaft geändert wird.Wenn die Höhe des oberen Bereichs der Glasframe kleiner als die Höhe der Titelleistenschaltflächen ist, sind die Titelleistenschaltflächen nicht vollständig sichtbar. |
Um ein benutzerdefiniertes Fenster ohne Glasframe zu erstellen, legen Sie die GlassFrameThickness-Eigenschaft auf einen einheitlichen Wert 0 fest. Dadurch werden die standardmäßigen Titelleistenschaltflächen deaktiviert und ausgeblendet.
Um den Glasframe zu erweitern, um das gesamte Fenster abzudecken, legen Sie die GlassFrameThickness-Eigenschaft auf einen negativen Wert auf jeder Seite fest. Wenn die GlassFrameThickness-Eigenschaft auf einen negativen Wert für jede Seite festgelegt wurde, ist ihr umgewandelter Wert gleich GlassFrameCompleteThickness.
Hinweis |
---|
Aero ist ein Satz von optischen Verbesserungen für Aussehen und Funktionalität des Windows-Desktops, der in Windows Vista eingeführt wurde.Eine der visuell offensichtlicheren Funktionen von Aero sind lichtdurchlässiges Glasfensterrahmen.Windows Aero wird von der Funktion für die Desktopzusammensetzung des Desktopfenster-Managers (DWM) aktiviert. |
Windows Aero-Glaseffekte werden nicht unter allen Betriebssystemen unterstützt und können unter unterstützten Betriebssystemen deaktiviert werden. Wenn Windows Aero nicht verfügbar ist, wird der Glasframe unabhängig vom GlassFrameThickness-Eigenschaftswert nicht angezeigt. Der von dieser Eigenschaft angegebene Grenzbereich wird stattdessen schwarz angezeigt. Überprüfen Sie die IsGlassEnabled-Eigenschaft, um sicherzustellen, dass Windows Aero-Glaseffekte verfügbar sind. Wenn Glaseffekte nicht verfügbar sind, sollten Sie einen alternativen Fensterstil bereitstellen, der nicht den Glasframe verwendet. Oder verwenden Sie das Standardfenster, indem Sie den Fensterstil auf NULL festlegen.
Erweitern Sie den WPF-Inhalt in den Fensterrahmen, indem Sie ein ControlTemplate-Element angeben, das die Darstellung und das Verhalten des Rahmeninhalts definiert. Sie legen TargetType von ControlTemplate auf den Typ des Fensters fest, das Sie anpassen.
<ControlTemplate TargetType="{x:Type local:MainWindow}">
Standardmäßig sind die Teile der visuellen Elemente, die innerhalb des Nicht-Clientbereichs des Fensters befinden, nicht interaktiv. Um interaktive Elemente im Nicht-Clientbereich zu aktivieren, fügen Sie die angefügte WindowsChrome.IsHitTestVisibleInChrome-Eigenschaft an das Element an, und legen Sie sie auf TRUE fest.
Das folgende XAML-Markup veranschaulicht die Hauptelemente, die zum Anpassen eines Fensters mithilfe der WindowChrome-Klasse erforderlich sind.
<Style x:Key="StandardStyle" TargetType="{x:Type local:MainWindow}">
<Setter Property="shell:WindowChrome.WindowChrome">
<Setter.Value>
<shell:WindowChrome />
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MainWindow}">
<Grid>
<Border Background="White"
Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}">
<ContentPresenter Content="{TemplateBinding Content}" />
</Border>
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}"
VerticalAlignment="Top" HorizontalAlignment="Left"
Margin="36,8,0,0"/>
<Image Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Icon}"
VerticalAlignment="Top" HorizontalAlignment="Left"
Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(shell:WindowChrome.WindowChrome).ResizeBorderThickness}"
Width="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=SmallIconSize.Width}"
shell:WindowChrome.IsHitTestVisibleInChrome="True"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Der erste Setter fügt WindowChrome am Fenster an. Er verwendet alle Standardwerte für die WindowChrome-Eigenschaften, wodurch das Fenster wie ein Standardfenster aussieht.
<Setter Property="shell:WindowChrome.WindowChrome">
<Setter.Value>
<shell:WindowChrome />
</Setter.Value>
</Setter>
Die Fenstervorlage muss eine Inhaltsdarstellung angeben, um den Inhalt des Fensters anzuzeigen, das in Ihrer Anwendung angegeben ist. Standardmäßig erweitert die WindowChrome-Klasse den Clientbereich, um den Nicht-Clientbereich einzuschließen. Um den Glasframe freizulegen, müssen Sie einen Rand um ContentPresenter angeben. Durch dieses Markup wird ein Rahmen mit einem weißen Hintergrund um die Inhaltsdarstellung angegeben, um die Darstellung eines Standardfensters zu emulieren. Außerdem wird ein Rand angegeben, der an die WindowNonClientFrameThickness-Eigenschaft gebunden ist, die die standardmäßige Systembreite für den Frame abruft.
<Border Background="White"
Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}">
<ContentPresenter Content="{TemplateBinding Content}" />
</Border>
Das Anwendungssymbol und der Titel werden durch die WindowChrome-Klasse nicht angezeigt. Sie müssen dem Rahmen als benutzerdefinierte Inhalte hinzugefügt werden. Der folgende XAML-Code fügt ein Bild und einen Textblock mit dem Symbol und dem Titel hinzu. Beide Elemente sind an die entsprechenden Eigenschaften im Fenster gebunden. Die Breite des Bildes wird an die SmallIconSize-Breite gebunden, die die standardmäßige Systemgröße für das Symbol erhält. Die angefügte IsHitTestVisibleInChrome-Eigenschaft wird auf dem Bild festgelegt, sodass es Mausereignisse empfangen kann.
<Image Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Icon}"
VerticalAlignment="Top" HorizontalAlignment="Left"
Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(shell:WindowChrome.WindowChrome).ResizeBorderThickness}"
Width="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=SmallIconSize.Width}"
shell:WindowChrome.IsHitTestVisibleInChrome="True"/>
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}"
VerticalAlignment="Top" HorizontalAlignment="Left"
Margin="36,8,0,0"/>
Threadsicherheit
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.