c# - 两种方式绑定(bind)到用户设置?

标签 c# winforms

我的 Properties/Settings.settings 文件中有一个 bool 设置,它基本上存储每个用户的“从右到左”或“从左到右”显示模式。

我的功能区中有一个复选框,我已将其绑定(bind)到该值。然而,绑定(bind)似乎只有一种方式。有什么方法可以实现这两种方式,而无需编写代码来保留设置?

澄清

我已成功将应用程序配置为在首次加载时绑定(bind)到设置。问题是这是一种单向绑定(bind),即当设置更改时 UI 会更新,但当 UI 更改时设置不会更改。

因此我的问题...如何配置针对用户设置的双向绑定(bind)?

我可以编写事件处理程序来手动完成所有这些操作,但我认为这违背了使用绑定(bind)的意义。

最佳答案

好吧,经过一番挖掘后,您似乎需要在某种程度上实现这一点,但它可能并不像您希望的那样干净。基本上,您的绑定(bind)对象必须实现 INotifyPropertyChanged (这是一直给我带来麻烦的部分...我认为 CheckBox 必须实现此接口(interface),但它是复选框绑定(bind)到的对象) ,Properties.Settings.Default 就是这样做的。因此,您需要做的就是以下内容

Hook Property.Settings.Default 的 OnPropertyChanged 事件:

Properties.Settings.Default.PropertyChanged +=
    new PropertyChangedEventHandler(Default_PropertyChanged);

然后,当任何绑定(bind)属性发生更改时,只需调用 Save 方法即可:

void Default_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    Properties.Settings.Default.Save();
}

基本上,当您绑定(bind)对象时,它会相应地更改Settings.Default.[Setting]。它只是不会对每个更改调用 Save。您必须实现这部分内容。

关于c# - 两种方式绑定(bind)到用户设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873308/

相关文章:

c# - 持续性内存困惑

c# - 与 WPF 属性异步

c# - 在 ListView WPF 中设置项目焦点

c# - 在 C# Windows 应用程序中将两个数据表导入到一个 csv 文件中

c# - 将列表分配给列表框时,未将对象引用设置为对象实例异常

c# - UI线程如何知道另一个线程上的数据?

c# - 从线程增加 Int 时的竞争条件

c# - DNN 6 在登录页面隐藏找回密码

c# - 窗体总是在最上面

c# - C#中Datagridview的数字格式