Le meilleur moyen de lier WPF propriétés à ApplicationSettings en C#?
Quel est le meilleur moyen de lier WPF propriétés à ApplicationSettings en C#? Est-il une manière automatique comme dans une Application Windows Forms? Semblable à cette question, comment (et est-il possible d') faites-vous la même chose dans WPF?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez lier directement à l'objet statique créé par Visual Studio.
Dans votre windows déclaration d'ajouter:
où
UserSettings
est le namespace de l'application.Ensuite, vous pouvez ajouter une liaison à un réglage correct:
Maintenant, vous pouvez enregistrer les paramètres, par exemple lorsque vous fermez votre application:
TwoWay
liaison fonctionne dans les deux sens. Nice. +1Dans le cas où vous êtes un VB.Net développeur de tenter cela, la réponse est à imposer un brin différent.
Avis la .Propriétés n'est pas là.
Dans votre contraignant c'est MySettings.Par défaut, au lieu de Paramètres.Par défaut depuis l'application.config magasins différemment.
Après un peu de m'arracher les cheveux, j'ai découvert cela. Espérons que cela aide
J'aime la accepté de répondre, je suis tombé sur un cas particulier cependant. J'ai eu ma zone de texte mis en "lecture seule" pour que je puisse changer la valeur de ce que dans le code. Je ne pouvais pas comprendre pourquoi la valeur n'était pas retournée à l'Paramètres bien que j'ai eu la Mode comme "Bidirectionnelle".
Puis, j'ai trouvé ceci: http://msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx
Donc, si vous avez la zone de texte avec IsReadOnly="True" de la propriété, vous devez ajouter un UpdateSourceTrigger=PropertyChanged de la valeur à la déclaration Contraignante:
Le plus simple serait de se lier à un objet qui expose vos paramètres de l'application en tant que propriétés ou d'inclure l'objet en tant que StaticResource et de se lier à qui.
Une autre direction, vous pouvez prendre est de la création de votre propre Extension De Balisage de sorte que vous pouvez simplement utiliser PropertyName="{ApplicationSetting SomeSettingName}". Afin de créer un personnalisé, extension de balisage vous avez besoin d'hériter MarkupExtension et décorer la classe avec un MarkupExtensionReturnType attribut. John Bowen a un post sur la création d'une coutume MarkupExtension qui pourraient rendre le processus un peu plus clair.
Kris, je ne suis pas sûr que c'est le meilleur moyen de lier ApplicationSettings, mais c'est la façon dont je l'ai fait dans Plein d'esprit.
1) Créer une propriété de dépendance pour le paramètre que vous souhaitez lier à la fenêtre/page/usercontrol/conteneur. C'est le cas j'ai un paramètre de l'utilisateur de jouer des sons.
2) Dans le constructeur, d'initialiser la valeur de la propriété de faire correspondre les paramètres de l'application
3) Lier la propriété dans le code XAML
Vous pouvez télécharger l'intégralité de l' Esprit de la source de le voir en action ou naviguez simplement de la code pour les options de la fenêtre.
Je tiens à le faire à travers le ViewModel et il suffit de faire la liaison normal dans le XAML
Également lire cette article sur comment c'est fait dans BabySmash
Vous avez seulement besoin de revenir les Paramètres à FAIRE (Comme Alan exemple) si vous avez besoin de la notification de changement! la liaison à la POCO Paramètres de la classe travaillera également!