在我开始提出问题之前,我一直在阅读关于这个问题的所有可以想到的链接,但我仍然被卡住了。
我正在使用C#和Visual Studio组装WPF。我希望当应用程序关闭并重新启动时文本框中保留文本,并且文本是可读/写的,因为文本会经常更改。
我已经设置了一个新的.settings文件并将其放在我项目的Properties文件夹中。我使用漂亮的网格创建了这个,我可以在其中创建名称,类型和值等等。
几个小时后的几个星期,我觉得我离我很近但不确定。这是Designer.cs -
namespace PRX.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class saveData : global::System.Configuration.ApplicationSettingsBase {
private static saveData defaultInstance = ((saveData)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new saveData())));
public static saveData Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("mainSource")]
public string Setting {
get {
return ((string)(this["Setting"]));
}
set {
this["Setting"] = value;
}
}
}
}
.settings文件名为saveData.settings,我将表设置为Name:Setting,Type:String,Value:mainSource。范围设置为用户。这与Properties文件夹中的默认Settings.settings文件类似。
问题中的TextBox如此连接如下:
<ScrollViewer VerticalScrollBarVisibility="Auto">
<TextBox DockPanel.Dock="Top" Margin="10" Background="Black" Name="tb1" TextWrapping="Wrap" AcceptsReturn="True" Text="{Binding Source={x:Static p:saveData.Default}, Path=Default.Setting, Mode=TwoWay}"></TextBox>
</ScrollViewer>
这里有一个很好的衡量标准,它在app.config中的样子:
<PRX.saveData>
<setting name="Setting" serializeAs="String">
<value>mainSource</value>
</setting>
</PRX.saveData>
</userSettings>
我知道它已连接到.Settings文件,因为当我调试值'mainSource'出现在文本框中时
我已经阅读了关于这个主题的十多个链接,但最值得注意的是这两个:
http://blogs.msdn.com/b/patrickdanino/archive/2008/07/23/user-settings-in-wpf.aspx http://msdn.microsoft.com/en-us/library/k4s6c3a0.aspx
我特别对此感到困惑,我正在阅读的文档看起来非常简单,但我似乎无法掌握它。任何帮助都非常感激。感谢
答案 0 :(得分:0)
问题是你没有在你的设置上调用“保存()”为什么它没有保留,你可以尝试在窗口初始化时加载文本并在退出时将其保存到设置,你必须调用保存( )坚持你的设置
修改强>
正如您所说,文本框已连接到设置但未保存更改,为此,您必须在设置上调用“保存”并且无论您在何处执行此操作,例如您可以为文本添加处理程序改变:
<TextBox DockPanel.Dock="Top" Margin="10" Background="Black" Name="tb1" TextWrapping="Wrap" AcceptsReturn="True" Text="{Binding Source={x:Static p:saveData.Default}, Path=Default.Setting, Mode=TwoWay} TextChanged="tb1_TextChanged""></TextBox>
并为后面的代码添加处理程序:
private void tb1_TextChanged(object sender, TextChangedEventArgs e)
{
Properties.saveData.Default.Save();
}
检查此链接: http://blogs.msdn.com/b/patrickdanino/archive/2008/07/23/user-settings-in-wpf.aspx Best way to bind WPF properties to ApplicationSettings in C#?