当前位置:  开发笔记 > 编程语言 > 正文

在WP#中将WPF属性绑定到ApplicationSettings的最佳方法?

如何解决《在WP#中将WPF属性绑定到ApplicationSettings的最佳方法?》经验,为你挑选了4个好方法。

在C#中将WPF属性绑定到ApplicationSettings的最佳方法是什么?是否有像Windows窗体应用程序一样的自动方式?与此问题类似,您如何(并且可能)在WPF中执行相同的操作?



1> Sacha Brutti..:

您可以直接绑定到Visual Studio创建的静态对象.

在你的windows声明中添加:

xmlns:p="clr-namespace:UserSettings.Properties"

UserSettings应用程序命名空间在哪里.

然后,您可以将绑定添加到正确的设置:


现在,您可以在关闭应用程序时按照示例保存设置:

protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
    Properties.Settings.Default.Save();
    base.OnClosing(e); 
}


对于那里的搜索者来说,*TwoWay*是必需的,否则设置将不会被保存.很烦人试图想出那一个.
有关略有不同的语法(以及良好的介绍),请阅读http://blogs.msdn.com/b/patrickdanino/archive/2008/07/23/user-settings-in-wpf.aspx
虽然这是对问题的一个很好的答案,但我发现绑定对于编辑设置的工具/选项对话框样式来说并不是正确的答案; 在用户单击"确定"按钮之前,您不希望将窗口小部件值复制到属性.使用显式代码在OK单击处理程序中执行此操作意味着取消按钮根本不需要处理程序IsCancel == true
我很惊讶"TwoWay"绑定实际上在两个方面都有效.尼斯.+1

2> 小智..:

如果你是一个尝试这个的VB.Net开发人员,答案是不同的.

xmlns:p="clr-namespace:ThisApplication"

请注意.Properties不存在.


在你的绑定中它是MySettings.Default,而不是Settings.Default - 因为app.config以不同的方式存储它.



拉了一下头发后,我发现了这一点.希望能帮助到你



3> Remus..:

我喜欢接受的答案,但我碰到了一个特例.我将我的文本框设置为"只读",以便我只能在代码中更改它的值.我无法理解为什么这个值没有传播回设置,尽管我将模式设为"TwoWay".

然后,我发现了这个:http: //msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx

默认值为Default,它返回目标依赖项属性的默认UpdateSourceTrigger值.但是,大多数依赖项属性的默认值是PropertyChanged,而Text属性的默认值是LostFocus.

因此,如果您具有带有IsReadOnly ="True"属性的文本框,则必须将UpdateSourceTrigger = PropertyChanged值添加到Binding语句:




4> Richard Szal..:

最简单的方法是绑定到一个对象,该对象将您的应用程序设置公开为属性,或者将该对象包含为StaticResource并绑定到该对象.

您可以采取的另一个方向是创建自己的标记扩展,这样您就可以使用PropertyName ="{ApplicationSetting SomeSettingName}".要创建自定义标记扩展,您需要继承MarkupExtension并使用MarkupExtensionReturnType属性修饰该类.John Bowen 发表了一篇关于创建自定义MarkupExtension的文章,可能会让这个过程更加清晰.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有