Quelle est la méthode préférée pour conserver les paramètres utilisateur pour les applications WPF avec .Net Core> = 3.0?
Création du projet WPF .Net Core 3.0 (VS2019 V16.3.1) Maintenant, j'ai vu qu'il n'y avait plus de section Properties.Settings.
Après la recherche en ligne, a commencé à plonger dans Microsoft.Extensions.Configuration.
À côté du code gonflé pour accéder aux paramètres, maintenant encore pire -> Pas de sauvegarde?
Paramètres de configuration utilisateur dans .NET Core
Heureusement ou malheureusement, Microsoft.Extensions.Configuration ne prend pas en charge l'enregistrement par conception. En savoir plus dans ce problème Github Pourquoi il n'y a pas de sauvegarde dans ConfigurationProvider?
Quelle est la méthode préférée (et facile/rapide/simple) pour conserver les paramètres utilisateur pour les applications WPF avec .Net Core> = 3.0?
Avant <= .Net 4.8
, C'était aussi simple que:
Lire les variables au démarragevar culture = new CultureInfo(Properties.Settings.Default.LanguageSettings);
lorsqu'une variable change -> l'enregistrer immédiatementProperties.Settings.Default.LanguageSettings = selected.TwoLetterISOLanguageName; Properties.Settings.Default.Save();
Pour Wpf Net.Core
Projet cliquez sur le bouton droit de la souris -> Ajouter un nouvel élément -> Fichier de paramètres (général)
Utilisation
Settings1.Default.Height = this.Height;
Settings1.Default.Width = this.Width;
this.Height = Settings1.Default.Height;
this.Width = Settings1.Default.Width;
Settings1.Default.Save();
Où 'Settings1' a créé le nom du fichier
[~ # ~] exemple [~ # ~]
Double-cliquez sur le fichier 'Settings1.settings' et éditez
private void MainWindowRoot_SourceInitialized(object sender, EventArgs e)
{
this.Top = Settings1.Default.Top;
this.Left = Settings1.Default.Left;
this.Height = Settings1.Default.Height;
this.Width = Settings1.Default.Width;
// Very quick and dirty - but it does the job
if (Settings1.Default.Maximized)
{
WindowState = WindowState.Maximized;
}
}
private void MainWindowRoot_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (WindowState == WindowState.Maximized)
{
// Use the RestoreBounds as the current values will be 0, 0 and the size of the screen
Settings1.Default.Top = RestoreBounds.Top;
Settings1.Default.Left = RestoreBounds.Left;
Settings1.Default.Height = RestoreBounds.Height;
Settings1.Default.Width = RestoreBounds.Width;
Settings1.Default.Maximized = true;
}
else
{
Settings1.Default.Top = this.Top;
Settings1.Default.Left = this.Left;
Settings1.Default.Height = this.Height;
Settings1.Default.Width = this.Width;
Settings1.Default.Maximized = false;
}
Settings1.Default.Save();
}