Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Cet article décrit les nouveautés de Windows Presentation Foundation (WPF) pour .NET 9. Le principal domaine d’intérêt pour WPF cette année a été d’améliorer les fonctionnalités visuelles de WPF et de fournir un nouveau thème basé sur les principes de conception Fluent pour Windows 11.
Vous pouvez afficher un aperçu du nouveau thème en téléchargeant l’application galerie WPF à partir du Microsoft Store.
Un nouveau thème est inclus avec WPF qui offre une esthétique Windows 11 fraîche et moderne pour les applications WPF. Il inclut des modes clair et foncé intégrés, ainsi qu’une prise en charge des couleurs d’accentuation système.
Vous pouvez appliquer le thème Fluent de deux façons, définir la ThemeMode
propriété ou référencer le dictionnaire de ressources de thème Fluent. Pour plus d’informations sur le paramètre de mode thème, consultez ThemeMode.
Le dictionnaire de ressources de thème Fluent est disponible dans l’URI de pack suivant : /PresentationFramework.Fluent;component/Themes/Fluent.xaml
. Pour appliquer la ressource au niveau de l’application, chargez la ressource dans les ressources de votre application :
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/PresentationFramework.Fluent;component/Themes/Fluent.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Le dictionnaire de ressources peut également être appliqué à un Window
thème uniquement la fenêtre elle-même.
Une nouvelle API de style a été ajoutée à WPF, qui est exposée via la ThemeMode
propriété. À l’aide de cette propriété, vous pouvez appliquer le style Fluent sans avoir à référencer directement un dictionnaire de ressources de style.
Les valeurs disponibles sont les suivantes :
Light
— Applique le thème Fluent clair.Dark
— Applique le thème Fluent foncé.System
— Applique le thème Fluent clair ou sombre, en fonction du paramètre Windows actuel de l’utilisateur.None
—(valeur par défaut) Utilise le thème Aero2.Pour appliquer un mode thème pour l’ensemble de l’application, définissez la ThemeMode
propriété sur le Application
type. Pour l’appliquer à une seule fenêtre, définissez-la ThemeMode
sur le Window
type.
Par exemple, stylez l’ensemble de l’application en fonction du thème clair ou foncé actuel défini par Windows :
<Application x:Class="MyWpfProject.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyWpfProject"
StartupUri="MainWindow.xaml"
ThemeMode="System">
Voici un exemple de forcer le thème clair, quel que soit le thème défini par Windows :
<Window x:Class="MyWpfProject.LightWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyWpfProject"
Title="LightWindow" Height="450" Width="800"
ThemeMode="Light">
Si la ThemeMode
valeur est définie sur une valeur autre qu’au None
niveau de l’application, None
elle ne peut plus être appliquée au niveau de la fenêtre.
ThemeMode
est conçu pour respecter les paramètres définis par un dictionnaire Fluent, ce qui vous permet de personnaliser le thème Fluent.
La prise en charge de la modification du paramètre dans le ThemeMode
code est actuellement une fonctionnalité expérimentale. L’accès à la propriété dans le ThemeMode
code génère une erreur WPF0001, empêchant l’accès à l’API. Supprimez l’erreur d’accès à l’API.
Avertissement
Cette API est expérimentale et susceptible de changer.
Tout d’abord, ajoutez l’élément suivant PropertyGroup
à votre fichier projet pour supprimer l’erreur :
<PropertyGroup>
<NoWarn>$(NoWarn);WPF0001</NoWarn>
</PropertyGroup>
Conseil
Vous pouvez utiliser la #pragma warning disable WPF0001
directive pour supprimer l’erreur où elle se produit au lieu de la désactiver pour l’ensemble du projet.
Ensuite, définissez la ThemeMode
propriété au niveau de l’application ou de la fenêtre :
// Set light mode at the application-level
Application.Current.ThemeMode = ThemeMode.Light;
// Set dark mode on the current window
this.ThemeMode = ThemeMode.Dark;
Windows 10 a introduit une couleur d’accentuation sélectionnable par l’utilisateur utilisée pour fournir une touche personnelle ou appeler un élément visuel spécifique. WPF prend désormais en charge la couleur d’accentuation sélectionnée par l’utilisateur.
La couleur visuelle est disponible en tant que System.Windows.Media.Color
, System.Windows.Media.SolidColorBrush
ou System.Windows.ResourceKey
. Outre la couleur elle-même, les nuances claires et sombres de la couleur d’accentuation sont disponibles. Ceux-ci sont accessibles via System.Windows.SystemColors
:
Couleur | Clé de ressource colori | Brush | Clé de ressource de pinceau | |
---|---|---|---|---|
Accent | AccentColor |
AccentColorKey |
AccentColorBrush |
AccentColorBrushKey |
Lumière 1 | AccentColorLight1 |
AccentColorLight1Key |
AccentColorLight1Brush |
AccentColorLight1BrushKey |
Lumière 2 | AccentColorLight2 |
AccentColorLight2Key |
AccentColorLight2Brush |
AccentColorLight2BrushKey |
Lumière 3 | AccentColorLight3 |
AccentColorLight3Key |
AccentColorLight3Brush |
AccentColorLight3BrushKey |
Sombre 1 | AccentColorDark1 |
AccentColorDark1Key |
AccentColorDark1Brush |
AccentColorDark1BrushKey |
Sombre 2 | AccentColorDark2 |
AccentColorDark2Key |
AccentColorDark2Brush |
AccentColorDark2BrushKey |
Sombre 3 | AccentColorDark3 |
AccentColorDark3Key |
AccentColorDark3Brush |
AccentColorDark3BrushKey |
Important
Les couleurs d’accentuation sont disponibles avec ou sans le thème Fluent.
Lors de la création d’une interface utilisateur qui utilise la couleur d’accentuation, habillage de la clé de ressource dans une ressource dynamique. Lorsqu’un utilisateur modifie la couleur d’accentuation pendant l’ouverture de l’application, la couleur est mise à jour automatiquement dans l’application. Par exemple, voici une TextBlock
couleur de premier plan définie sur la couleur d’accentuation choisie par l’utilisateur :
<TextBlock Text="First Name:"
Foreground="{DynamicResource {x:Static SystemColors.AccentColorBrushKey}}" />
WPF n’a jamais pris en charge les ligatures basées sur des traits d’union dans les contrôles d’interface utilisateur tels que le TextBlock
. Cette demande de communauté de longue date a été ajoutée dans .NET 9.
Voici une image des ligatures qui ne sont pas appliquées aux glyphes dans .NET 8 :
Et maintenant, ce même texte que affiché dans .NET 9 :
BinaryFormatter
est considéré comme dangereux, car il est vulnérable aux attaques de désérialisation, ce qui peut entraîner un déni de service (DoS), une divulgation d’informations ou une exécution de code à distance. Elle a été implémentée avant que les vulnérabilités de désérialisation aient été bien comprises et sa conception ne respecte pas les meilleures pratiques de sécurité modernes.
À compter de .NET 9, son implémentation a été supprimée pour éviter ces risques de sécurité. Quand BinaryFormatter
elle est utilisée, l’exception PlatformNotSupportedException
est levée.
WPF utilisé BinaryFormatter
dans de nombreux scénarios, par exemple lors de la sérialisation des données pour les opérations de presse-papiers et de glisser-déplacer. En interne, WPF continue d’utiliser un sous-ensemble plus sûr de BinaryFormatter
gérer des cas d’usage spécifiques avec un ensemble connu de types.
Pour plus d’informations sur BinaryFormatter
, consultez le guide de migration WPF pour BinaryFormatter.
Commentaires sur .NET Desktop feedback
.NET Desktop feedback est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantEntrainement
Module
Choisir la meilleure infrastructure d’application pour un projet de développement Windows - Training
Les développeurs Windows disposent de différentes options lorsqu’il s’agit de créer des applications s’exécutant sur Windows. Ce module présente les infrastructures d’interface utilisateur Windows disponibles pour le développement Windows. Il fournit également des conseils sur la façon de choisir la meilleure infrastructure pour votre application.