An einen Wert binden, der in den Einstellungen definiert ist

In WPF kann ich Bindung mit Werten verwenden, die in Einstellungen definiert sind? Wenn dies möglich ist, geben Sie bitte ein Muster an.

Solutions Collecting From Web of "An einen Wert binden, der in den Einstellungen definiert ist"

Zuerst müssen Sie einen benutzerdefinierten XML-Namespace hinzufügen, der den Namespace entwirft, in dem die Einstellungen definiert sind:

xmlns:properties="clr-namespace:TestSettings.Properties" 

Dann greifen Sie in Ihrer XAML-Datei mit der folgenden Syntax auf die Standardeinstellungen-Instanz zu:

 {x:Static properties:Settings.Default} 

Also hier ist der endgültige Ergebniscode:

  

Quelle: WPF – Wie binden Sie ein Steuerelement an eine Eigenschaft, die in den Einstellungen definiert ist?


Hinweis: Wie von @Daniel und @nabulke hervorgehoben, vergessen Sie nicht, Access Modifier Ihrer Einstellungsdatei auf Public und Scope auf User

Die obige Lösung funktioniert, aber ich finde es ziemlich ausführlich … Sie könnten stattdessen eine benutzerdefinierte Markuperweiterung verwenden, die folgendermaßen verwendet werden könnte:

  

Hier ist der Code für diese Erweiterung:

 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; } } 

Mehr Details hier: http://www.thomaslevesque.com/2008/11/18/wpf-binding-to-application-suse-a-markup-extension/

@ CSharper’s Antwort funktionierte nicht für meine WPF-Anwendung, die in VB.NET codiert war (nicht C #, im Gegensatz zu 99.999% anderer WPF-Anwendungen), da ich einen persistenten Compilererrors erhielt, der beschwerte, dass die Settings nicht im MyApp.Properties Namespace gefunden wurden. was auch nach dem Wiederaufbau nicht weggehen würde.

Für mich funktionierte nach vielen Online-Suchen stattdessen die Verwendung des local XAML-Namespace, der standardmäßig in der XAML-Datei des Hauptfensters meiner Anwendung erstellt wurde:

  xmlns:local="clr-namespace:MyApp"  > 

… und binde damit an meine Einstellungen, indem ich etwas wie das Folgende MyBooleanSetting (wobei MyBooleanSetting eine Einstellung ist, die ich in meinen Projekteigenschaften vom Typ Boolean und dem Bereich Benutzer mit dem Standard-Modifizierer Friend access definiert habe):

  

Um sicherzustellen, dass die Einstellungen tatsächlich gespeichert werden, sollten Sie unbedingt anrufen

 MySettings.Default.Save() 

… irgendwo in Ihrem Code- Me.Closing (z. B. im Me.Closing Ereignis für Ihre MainWindow.xaml.vb Datei).

(An diesen Visual Studio Forum-Beitrag zur Inspiration; siehe die Antwort von Muhammad Siddiqi.)