Dans WPF, puis-je utiliser la liaison avec des valeurs définies dans Paramètres? Si cela est possible, veuillez fournir un échantillon.
Tout d'abord, vous devez ajouter un espace de noms XML personnalisé qui concevra l'espace de noms où les paramètres sont définis:
xmlns:properties="clr-namespace:TestSettings.Properties"
Ensuite, dans votre fichier XAML, accédez à l'instance de paramètres par défaut à l'aide de la syntaxe suivante:
{x:Static properties:Settings.Default}
Voici donc le code de résultat final:
<ListBox x:Name="lb"
ItemsSource="{Binding Source={x:Static properties:Settings.Default},
Path=Names}" />
Source: WPF - Comment lier un contrôle à une propriété définie dans les paramètres?
Remarque: Comme indiqué par @Daniel et @nabulke, n'oubliez pas de définir Access Modifier de votre fichier de paramètres sur Public
et Portée à User
La solution ci-dessus fonctionne, mais je la trouve assez verbeuse ... vous pouvez utiliser une extension de balisage personnalisée à la place, qui pourrait être utilisée comme ceci:
<ListBox x:Name="lb" ItemsSource="{my:SettingBinding Names}" />
Voici le code de cette extension:
public class SettingBindingExtension : Binding
{
public SettingBindingExtension()
{
Initialize();
}
public SettingBindingExtension(string path)
:base(path)
{
Initialize();
}
private void Initialize()
{
this.Source = WpfApplication1.Properties.Settings.Default;
this.Mode = BindingMode.TwoWay;
}
}
Plus de détails ici: http://www.thomaslevesque.com/2008/11/18/wpf-binding-to-application-settings-using-a-markup-extension/
La réponse de @ CSharper n'a pas fonctionné pour mon application WPF codée en VB.NET (pas en C #, contrairement à apparemment 99,999% des autres applications WPF), car j'ai eu une erreur de compilation persistante se plaignant que Settings
était introuvable dans le MyApp.Properties
namespace, qui ne disparaîtrait pas même après la reconstruction.
Ce qui a plutôt fonctionné pour moi, après de nombreuses recherches en ligne, a été d'utiliser à la place l'espace de noms XAML local
créé par défaut dans le fichier XAML de la fenêtre principale de mon application:
<Window
<!-- Snip -->
xmlns:local="clr-namespace:MyApp"
<!-- Snip -->
><!-- Snip --></Window>
... et lier à mes paramètres à travers elle en utilisant quelque chose comme ce qui suit (où MyBooleanSetting
est un paramètre que j'ai défini dans mes propriétés de projet de type Boolean
et de portée utilisateur, avec le modificateur d'accès ami par défaut ):
<CheckBox IsChecked="{Binding Source={x:Static local:MySettings.Default}, Path=MyBooleanSetting, Mode=TwoWay}"
Content="This is a bound CheckBox."/>
Pour vous assurer que les paramètres sont réellement enregistrés, assurez-vous d'appeler
MySettings.Default.Save()
... quelque part dans votre code-behind (comme dans le Me.Closing
événement pour votre MainWindow.xaml.vb
fichier).
(Mention de cette publication sur le forum Visual Studio pour l'inspiration; voir la réponse de Muhammad Siddiqi.)