有可能bind a property to an existing application setting using the designer,这样我就不必写像
这样的东西了textBox.Text = Settings.Default.Name;
初始化表单时。
现在看起来绑定在那里停止,即如果我更改了我的设置的值,它将不会更新我的文本框中的值,反之亦然。
是正常还是我遗失了什么?
答案 0 :(得分:14)
我将解释如何使用Visual Studio 2010在Windows窗体上执行此操作。在较新版本中,它可能类似。
ApplicationSettings
点击...
(PropertyBinding)
按钮
选择您希望控件绑定到哪个设置。
答案 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()之外,您不必执行任何操作。