【发布时间】:2010-04-24 12:53:39
【问题描述】:
如何将用户输入的值保存在文本框中? (WPF XAML) 所以在我的 xaml 窗口中我有一个文本框。用户启动我的应用程序,在其中输入一些值并按下按钮或按 Enter。他关闭应用程序,再次打开它。如何将他的输入保存在 WPF 中的那个 TextBox 中?
【问题讨论】:
如何将用户输入的值保存在文本框中? (WPF XAML) 所以在我的 xaml 窗口中我有一个文本框。用户启动我的应用程序,在其中输入一些值并按下按钮或按 Enter。他关闭应用程序,再次打开它。如何将他的输入保存在 WPF 中的那个 TextBox 中?
【问题讨论】:
您可以使用内置的 .net 设置。
在 Visual Studio 中,右键单击您的项目并选择添加新项目。从对话框中,选择“设置文件”,并为其命名,如“MySettings”。 Visual Studio 将创建一些文件,包括带有一些静态方法的 MySettings 类,以便您访问您的设置。
如果你打开这个文件,你会得到一个漂亮的网格用户界面,允许你输入一些设置,设置它们的类型(在本例中为String)并设置一个默认值。它还允许您指定它们是应用程序设置还是用户设置。
documents and settings\username\local settings 文件夹中。每个用户都可能不同。对于您所描述的内容,请为范围选择“用户”。
现在,访问代码中的值:
// Load the value into the text box.
txtBox1.text = MySettings.Default.SomeSetting;
并保存更改:
// Update the value.
MySettings.Default.SomeSetting = txtBox1.text;
// Save the config file.
MySettings.Default.Save();
在 MSDN here 上有关于所有这些的更多信息,在 ApplicationSettingsBase class here 上有更多信息。
(显然,如果您使用 mvvm 或任何其他 UI 模式,您可以调整此代码以在适当时将设置值加载到您的模型/视图模型中,而不是直接加载到文本框中)
【讨论】:
除了 Simon 所说的之外,WPF 还允许您将 UI 控件直接绑定到您的应用程序设置。这样您就不必手动加载它们。只需将项目的Properties 命名空间导入Window 或UserControl 并使用标准Binding 语法。在这里,我在项目的设置中定义了一个用户级设置,名为ServerURL。这是我绑定它的方式。
<Window x:Class="YourProjectNamespace.SomeWindow" xmlns:props="clr-namespace:YourProjectNamespace.Properties">
<TextBox Text="{Binding Source={x:Static props:Settings.Default}, Path=ServerURL}" />
</Window>
请记住,您仍然需要在某个时候调用Settings.Default.Save(),可能是在窗口关闭或任何适合您情况的情况下。双向绑定会自动更新源(在本例中为Settings 对象),但不会将其写入磁盘。为此,您必须致电Save()。
【讨论】: