使用VS.Net Designer中的绑定自动更新应用程序设置

时间:2010-07-30 11:46:25

标签: c#

有可能bind a property to an existing application setting using the designer,这样我就不必写像

这样的东西了
textBox.Text = Settings.Default.Name;

初始化表单时。

现在看起来绑定在那里停止,即如果我更改了我的设置的值,它将不会更新我的文本框中的值,反之亦然。

是正常还是我遗失了什么?

2 个答案:

答案 0 :(得分:14)

我将解释如何使用Visual Studio 2010在Windows窗体上执行此操作。在较新版本中,它可能类似。

  1. 单击要绑定的组件(文本框,复选框,...)
  2. 使组件的属性面板可见
  3. 展开节点ApplicationSettings
  4. 点击...

    右侧的(PropertyBinding)按钮

    Get application settings for component

  5. 选择您希望控件绑定到哪个设置。

  6. Exploring Secrets of Persistent Application Settings

    有更详细的教程

答案 1 :(得分:1)

嗯,这取决于。

首先,我不确定你是在谈论WPF还是Windows Forms,所以我也不会这样做。

其次,你没有“绑定”任何东西。您正在使用Name的值并将属性Text设置为此值。你正在设置一个属性。这没有任何神奇的副作用,它将Name属性与Text属性密不可分。

第三,您可以更改设置,但在保存之前,它们不会写回您的app.config。在Windows窗体应用程序中,您必须执行以下操作:

// event handler for the Form.Closed event.
// this.FormClosed += FormClosed;
void FormClosed(object sender, FormClosedEventArgs e)
{
    Settings.Default.Name = textBox.Text;
    Settings.Default.Save();
}

在WPF中,您将使用正常的绑定语义(这意味着您可以避免在关闭时设置所有属性值的麻烦),但您仍然必须陷阱关闭表单,以便您 可以保存()设置。

结合:

<TextBox 
  xmlns:lol="clr-namespace:MyApplication.Settings"
  Text="{Binding Name, Source={x:Static lol:Default}}" />

Save()调用与Forms示例一样,但除了调用Save()之外,您不必执行任何操作。