WindowChrome Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente un objet qui décrit les personnalisations de la zone non cliente d’une fenêtre.
public ref class WindowChrome : System::Windows::Freezable
public class WindowChrome : System.Windows.Freezable
type WindowChrome = class
inherit Freezable
Public Class WindowChrome
Inherits Freezable
- Héritage
Remarques
La WindowChrome classe vous permet d’étendre le contenu WINDOWS Presentation Foundation (WPF) dans la zone non cliente d’une fenêtre qui est généralement réservée au gestionnaire de fenêtres du système d’exploitation.
Standard Windows
Les fenêtres standard sont composées de deux rectangles qui se chevauchent. Le rectangle externe est la zone non cliente, souvent appelée chrome. Il est dessiné et géré par le gestionnaire de fenêtres du système d’exploitation. Ses dimensions sont déterminées par les paramètres de système d’exploitation standard. Le cadre non client fournit des fonctionnalités et des comportements de fenêtre standard. Ces boutons incluent les boutons de légende (Réduire, Agrandir et Fermer), la bordure de la fenêtre, redimensionner et déplacer les comportements, l’icône et le titre de l’application, ainsi que le menu système. Le rectangle interne est la zone cliente. Il contient le contenu de votre application, et il est dessiné et géré par l’application. Pour plus d’informations sur les fenêtres dans les applications WPF, consultez Vue d’ensemble de WPF Windows.
L’illustration suivante montre les parties d’une fenêtre standard.
Windows personnalisé
Vous pouvez personnaliser une bordure de fenêtre en définissant la Window.WindowStyle propriété sur None ou en utilisant la WindowChrome classe.
WindowStyle.None
Une façon de personnaliser l’apparence d’une fenêtre d’application WPF consiste à définir la Window.WindowStyle propriété Nonesur . Cela supprime le cadre non client de la fenêtre et laisse uniquement la zone cliente à laquelle vous pouvez appliquer un style personnalisé. Toutefois, lorsque le cadre non client est supprimé, vous perdez également les fonctionnalités système et les comportements qu’il fournit, tels que les boutons de légende et le redimensionnement de fenêtre. Un autre effet secondaire est que la fenêtre couvre la barre des tâches Windows lorsqu’elle est agrandie. Le paramètre WindowStyle.None vous permet de créer une application complètement personnalisée, mais nécessite également que vous implémentez une logique personnalisée dans votre application pour émuler le comportement de fenêtre standard.
WindowChrome
Pour personnaliser une fenêtre tout en conservant ses fonctionnalités standard, vous pouvez utiliser la WindowChrome classe. La WindowChrome classe sépare les fonctionnalités du cadre de fenêtre des visuels et vous permet de contrôler la limite entre le client et les zones non clientes de votre fenêtre d’application. La WindowChrome classe vous permet de placer du contenu WPF dans le cadre de la fenêtre en étendant la zone cliente pour couvrir la zone non cliente. En même temps, il conserve les comportements du système par le biais de deux zones invisibles ; redimensionner les zones de bordure et de légende .
Il existe deux parties principales pour créer une fenêtre personnalisée à l’aide de la WindowChrome classe. Tout d’abord, vous personnalisez la partie non cliente de la fenêtre en définissant les propriétés exposées sur l’objet WindowChrome . Ensuite, vous fournissez un modèle pour la fenêtre qui définit la partie de votre application étendue dans la zone non cliente. Les propriétés exposées sur l’objet WindowChrome sont ResizeBorderThickness, CaptionHeight, CornerRadiuset GlassFrameThickness.
La ResizeBorderThickness propriété spécifie une bordure invisible autour de l’extérieur de la fenêtre d’application que l’utilisateur peut cliquer et faire glisser pour redimensionner la fenêtre.
La CaptionHeight propriété spécifie une zone invisible en haut de la fenêtre qui active les comportements système généralement associés à la barre de titre. Ces comportements incluent : cliquer et faire glisser pour déplacer la fenêtre, double-cliquer pour agrandir la fenêtre, puis cliquer avec le bouton droit pour afficher le menu système.
La bordure de redimensionnement et la zone de légende n’ont aucun élément visuel ; ils définissent uniquement les zones qui répondent aux entrées et activent les comportements de fenêtre fournis par le système standard.
La CornerRadius propriété spécifie la quantité que les angles de la fenêtre sont arrondis. Cette propriété n’a aucun effet si le cadre en verre est activé pour une fenêtre.
La GlassFrameThickness propriété spécifie la largeur du cadre en verre autour de la fenêtre. Par défaut, elle utilise la valeur système spécifiée par la WindowNonClientFrameThickness propriété pour émuler l’apparence d’une fenêtre standard. Lorsque le cadre en verre est utilisé, les boutons de légende pour Réduire, Agrandir et Fermer sont visibles et interactifs. L’application est responsable de l’affichage de l’icône de l’application et du texte de légende. Vous pouvez définir la propriété pour rendre le GlassFrameThickness cadre en verre plus large ou plus étroit que la valeur par défaut.
Avertissement
La taille des boutons de légende ne change pas lorsque la GlassFrameThickness propriété est modifiée. Si la hauteur du haut du cadre en verre est inférieure à la hauteur des boutons de légende, les boutons de légende ne sont pas complètement visibles.
Pour créer une fenêtre personnalisée qui n’a pas de cadre en verre, définissez la GlassFrameThickness propriété sur une valeur uniforme de 0. Cela désactive et masque les boutons de légende standard.
Pour étendre le cadre en verre pour couvrir toute la fenêtre, définissez la GlassFrameThickness propriété sur une valeur négative de n’importe quel côté. Lorsque la GlassFrameThickness propriété est définie sur une valeur négative pour n’importe quel côté, sa valeur coerced est égale à GlassFrameCompleteThickness.
Note
Aero est un ensemble d’améliorations visuelles apportées à l’apparence et aux fonctionnalités du bureau Windows qui a été introduit dans Windows Vista. L’une des caractéristiques les plus évidentes d’Aero est les bordures de fenêtre de verre translucide. Windows Aero est activé par la fonctionnalité de composition de bureau du Gestionnaire de fenêtres de bureau (DWM).
Les effets de verre Windows Aero ne sont pas pris en charge sur tous les systèmes d’exploitation et peuvent être désactivés sur les systèmes d’exploitation pris en charge. Si Windows Aero n’est pas disponible, le cadre en verre ne s’affiche pas, quelle que soit la valeur de la GlassFrameThickness propriété. La zone de bordure spécifiée par cette propriété apparaît en noir à la place. Vérifiez la IsGlassEnabled propriété pour vérifier que les effets de verre Windows Aero sont disponibles. Si les effets de verre ne sont pas disponibles, vous devez fournir un autre style de fenêtre qui n’utilise pas le cadre en verre ou en utilisant la fenêtre standard en définissant le style de fenêtre sur Null.
Vous étendez votre contenu WPF dans le cadre de la fenêtre en spécifiant un ControlTemplate qui définit l’apparence et le comportement du contenu du cadre. Vous définissez TargetType du ControlTemplate sur le type de la fenêtre que vous personnalisez.
<ControlTemplate TargetType="{x:Type local:MainWindow}">
Par défaut, les parties des éléments visuels qui se trouvent dans la zone non cliente de la fenêtre ne sont pas interactives. Pour activer des éléments interactifs dans la zone non cliente, attachez la propriété jointe WindowsChrome.IsHitTestVisibleInChrome à l’élément et définissez-la sur true.
Le balisage XAML suivant montre les principaux éléments nécessaires pour personnaliser une fenêtre à l’aide de la classe WindowChrome.
<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>
Le premier setter attache la fenêtre WindowChrome à la fenêtre. Elle utilise toutes les valeurs par défaut pour les propriétés WindowChrome, ce qui rend la fenêtre semblable à une fenêtre standard.
<Setter Property="shell:WindowChrome.WindowChrome">
<Setter.Value>
<shell:WindowChrome />
</Setter.Value>
</Setter>
Le modèle de fenêtre doit spécifier un présentateur de contenu pour afficher le contenu de la fenêtre spécifiée dans votre application. Par défaut, la classe WindowChrome étend la zone cliente pour couvrir la bordure non cliente. Pour découvrir le cadre en verre, vous devez spécifier une marge autour de ContentPresenter. Ce balisage spécifie une bordure avec un arrière-plan blanc autour du présentateur de contenu pour émuler l’apparence d’une fenêtre standard. Elle spécifie également une marge liée à la propriété WindowNonClientFrameThickness, qui obtient la largeur système par défaut du cadre.
<Border Background="White"
Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}">
<ContentPresenter Content="{TemplateBinding Content}" />
</Border>
L’icône et le titre de l’application ne sont pas affichés par la classe WindowChrome ; ils doivent être ajoutés à la bordure en tant que contenu personnalisé. Le code XAML suivant ajoute une image et un bloc de texte pour afficher l’icône et le titre. Les deux éléments sont liés aux propriétés correspondantes sur la fenêtre. La largeur de l’image est liée à la largeur SmallIconSize, qui obtient la taille système par défaut de l’icône. La propriété jointe IsHitTestVisibleInChrome est définie sur l’image afin qu’elle puisse recevoir des événements de souris.
<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"/>
Constructeurs
| Nom | Description |
|---|---|
| WindowChrome() |
Initialise une nouvelle instance de la classe WindowChrome. |
Champs
| Nom | Description |
|---|---|
| CaptionHeightProperty |
Identifie la CaptionHeight propriété de dépendance. |
| CornerRadiusProperty |
Identifie la CornerRadius propriété de dépendance. |
| GlassFrameThicknessProperty |
Identifie la GlassFrameThickness propriété de dépendance. |
| IsHitTestVisibleInChromeProperty |
Identifie la IsHitTestVisibleInChrome propriété de dépendance. |
| NonClientFrameEdgesProperty |
Identifie la NonClientFrameEdges propriété de dépendance. |
| ResizeBorderThicknessProperty |
Identifie la ResizeBorderThickness propriété de dépendance. |
| ResizeGripDirectionProperty |
Identifie la ResizeGripDirection propriété de dépendance. |
| UseAeroCaptionButtonsProperty |
Identifie la UseAeroCaptionButtons propriété de dépendance. |
| WindowChromeProperty |
Identifie la WindowChrome propriété de dépendance. |
Propriétés
| Nom | Description |
|---|---|
| CanFreeze |
Obtient une valeur qui indique si l’objet peut être rendu non modifiable. (Hérité de Freezable) |
| CaptionHeight |
Obtient ou définit la hauteur de la zone de légende en haut d’une fenêtre. |
| CornerRadius |
Obtient ou définit une valeur qui indique la quantité que les coins d’une fenêtre sont arrondis. |
| DependencyObjectType |
Obtient le DependencyObjectType type CLR de cette instance. (Hérité de DependencyObject) |
| Dispatcher |
Obtient ce Dispatcher qui DispatcherObject est associé. (Hérité de DispatcherObject) |
| GlassFrameCompleteThickness |
Obtient une épaisseur uniforme de -1. |
| GlassFrameThickness |
Obtient ou définit une valeur qui indique la largeur de la bordure de verre autour d’une fenêtre. |
| IsFrozen |
Obtient une valeur qui indique si l’objet est actuellement modifiable. (Hérité de Freezable) |
| IsSealed |
Obtient une valeur qui indique si cette instance est actuellement scellée (en lecture seule). (Hérité de DependencyObject) |
| NonClientFrameEdges |
Obtient ou définit une valeur qui indique les bords du cadre de fenêtre qui ne sont pas détenus par le client. |
| ResizeBorderThickness |
Obtient ou définit une valeur qui indique la largeur de la bordure utilisée pour redimensionner une fenêtre. |
| UseAeroCaptionButtons |
Obtient ou définit une valeur qui indique si le test de positionnement est activé sur les boutons de légende Windows Aero. |
Propriétés attachées
| Nom | Description |
|---|---|
| IsHitTestVisibleInChrome |
Représente un objet qui décrit les personnalisations de la zone non cliente d’une fenêtre. |
| ResizeGripDirection |
Représente un objet qui décrit les personnalisations de la zone non cliente d’une fenêtre. |
| WindowChrome |
Obtient ou définit l’instance de celle-ci WindowChrome attachée à une fenêtre. |
Méthodes
| Nom | Description |
|---|---|
| CheckAccess() |
Détermine si le thread appelant a accès à ce DispatcherObjectfichier . (Hérité de DispatcherObject) |
| ClearValue(DependencyProperty) |
Efface la valeur locale d’une propriété. La propriété à effacer est spécifiée par un DependencyProperty identificateur. (Hérité de DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Efface la valeur locale d’une propriété en lecture seule. La propriété à effacer est spécifiée par un DependencyPropertyKey. (Hérité de DependencyObject) |
| Clone() |
Crée un clone modifiable de l’objet Freezable, effectuant des copies approfondies des valeurs de l’objet. Lors de la copie des propriétés de dépendance de l’objet, cette méthode copie les expressions (qui peuvent ne plus être résolues), mais pas les animations ou leurs valeurs actuelles. (Hérité de Freezable) |
| CloneCore(Freezable) |
Rend l’instance un clone (copie approfondie) de la propriété de base (non animée) spécifiée Freezable . (Hérité de Freezable) |
| CloneCurrentValue() |
Crée un clone modifiable (copie approfondie) de l’utilisation Freezable de ses valeurs actuelles. (Hérité de Freezable) |
| CloneCurrentValueCore(Freezable) |
Rend l’instance un clone modifiable (copie approfondie) de l’élément spécifié Freezable à l’aide de valeurs de propriété actuelles. (Hérité de Freezable) |
| CoerceValue(DependencyProperty) |
Force la valeur de la propriété de dépendance spécifiée. Pour ce faire, appelez n’importe quelle CoerceValueCallback fonction spécifiée dans les métadonnées de propriété pour la propriété de dépendance telle qu’elle existe sur l’appel DependencyObject. (Hérité de DependencyObject) |
| CreateInstance() |
Initialise une nouvelle instance de la classe Freezable. (Hérité de Freezable) |
| CreateInstanceCore() |
Crée une instance de la WindowChrome classe. |
| Equals(Object) |
Détermine si un élément fourni DependencyObject est équivalent à l’actuel DependencyObject. (Hérité de DependencyObject) |
| Freeze() |
Rend l’objet actuel non modifiable et définit sa IsFrozen propriété sur |
| FreezeCore(Boolean) |
Rend l’objet Freezable non modifiable ou teste s’il peut être rendu inmodifiable. (Hérité de Freezable) |
| GetAsFrozen() |
Crée une copie figée des valeurs de Freezablepropriété de base (non animées). Étant donné que la copie est figée, tous les sous-objets figés sont copiés par référence. (Hérité de Freezable) |
| GetAsFrozenCore(Freezable) |
Rend l’instance un clone figé de la propriété spécifiée à Freezable l’aide de valeurs de propriété de base (non animées). (Hérité de Freezable) |
| GetCurrentValueAsFrozen() |
Crée une copie figée de l’utilisation Freezable des valeurs de propriété actuelles. Étant donné que la copie est figée, tous les sous-objets figés sont copiés par référence. (Hérité de Freezable) |
| GetCurrentValueAsFrozenCore(Freezable) |
Rend l’instance actuelle un clone figé du fichier spécifié Freezable. Si l’objet a des propriétés de dépendance animée, leurs valeurs animées actuelles sont copiées. (Hérité de Freezable) |
| GetHashCode() |
Obtient un code de hachage pour ce DependencyObject. (Hérité de DependencyObject) |
| GetIsHitTestVisibleInChrome(IInputElement) |
Obtient la valeur de la IsHitTestVisibleInChrome propriété jointe à partir de l’élément d’entrée spécifié. |
| GetLocalValueEnumerator() |
Crée un énumérateur spécialisé pour déterminer quelles propriétés de dépendance ont des valeurs définies localement sur ce DependencyObject. (Hérité de DependencyObject) |
| GetResizeGripDirection(IInputElement) |
Obtient la valeur de la ResizeGripDirection propriété jointe à partir de l’élément d’entrée spécifié. |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| GetValue(DependencyProperty) |
Retourne la valeur effective actuelle d’une propriété de dépendance sur cette instance d’un DependencyObject. (Hérité de DependencyObject) |
| GetWindowChrome(Window) |
Obtient la valeur de la WindowChrome propriété jointe à partir de l’objet spécifié Window. |
| InvalidateProperty(DependencyProperty) |
Évalue à nouveau la valeur effective de la propriété de dépendance spécifiée. (Hérité de DependencyObject) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| OnChanged() |
Appelé lorsque l’objet actuel Freezable est modifié. (Hérité de Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Ce membre prend en charge l’infrastructure WPF (Windows Presentation Foundation) et n’est pas destiné à être utilisé directement à partir de votre code. (Hérité de Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Garantit que les pointeurs de contexte appropriés sont établis pour un DependencyObjectType membre de données qui vient d’être défini. (Hérité de Freezable) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Remplace l’implémentation DependencyObject de OnPropertyChanged(DependencyPropertyChangedEventArgs) l’appel de tous Changed les gestionnaires en réponse à une propriété de dépendance modifiée de type Freezable. (Hérité de Freezable) |
| ReadLocalValue(DependencyProperty) |
Retourne la valeur locale d’une propriété de dépendance, le cas échéant. (Hérité de DependencyObject) |
| ReadPreamble() |
Garantit l’accès Freezable à partir d’un thread valide. Les héritiers de Freezable doivent appeler cette méthode au début de toute API qui lit les membres de données qui ne sont pas des propriétés de dépendance. (Hérité de Freezable) |
| SetCurrentValue(DependencyProperty, Object) |
Définit la valeur d’une propriété de dépendance sans modifier sa source de valeur. (Hérité de DependencyObject) |
| SetIsHitTestVisibleInChrome(IInputElement, Boolean) |
Définit la valeur de la IsHitTestVisibleInChrome propriété jointe sur l’élément d’entrée spécifié. |
| SetResizeGripDirection(IInputElement, ResizeGripDirection) |
Définit la valeur de la ResizeGripDirection propriété jointe sur l’élément d’entrée spécifié. |
| SetValue(DependencyProperty, Object) |
Définit la valeur locale d’une propriété de dépendance, spécifiée par son identificateur de propriété de dépendance. (Hérité de DependencyObject) |
| SetValue(DependencyPropertyKey, Object) |
Définit la valeur locale d’une propriété de dépendance en lecture seule, spécifiée par l’identificateur DependencyPropertyKey de la propriété de dépendance. (Hérité de DependencyObject) |
| SetWindowChrome(Window, WindowChrome) |
Définit la valeur de la WindowChrome propriété jointe sur le .Window |
| ShouldSerializeProperty(DependencyProperty) |
Retourne une valeur qui indique si les processus de sérialisation doivent sérialiser la valeur de la propriété de dépendance fournie. (Hérité de DependencyObject) |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
| VerifyAccess() |
Applique que le thread appelant a accès à ce DispatcherObjectfichier . (Hérité de DispatcherObject) |
| WritePostscript() |
Déclenche l’événement Changed pour la Freezable méthode et appelle sa OnChanged() méthode. Les classes dérivées Freezable de doivent appeler cette méthode à la fin de toute API qui modifie les membres de classe qui ne sont pas stockés en tant que propriétés de dépendance. (Hérité de Freezable) |
| WritePreamble() |
Vérifie que l’objet Freezable n’est pas figé et qu’il est accessible à partir d’un contexte de threading valide. Freezable Les hériteurs doivent appeler cette méthode au début de toute API qui écrit dans les membres de données qui ne sont pas des propriétés de dépendance. (Hérité de Freezable) |
Événements
| Nom | Description |
|---|---|
| Changed |
Se produit lorsque l’objet Freezable qu’il contient est modifié. (Hérité de Freezable) |