0

在我开始我的问题之前,我一直在阅读关于这个主题的所有可以想象的链接,但我仍然被困住了。

我正在使用 C# 和 Visual Studio 组合一个 WPF。当应用程序关闭并重新启动时,我希望 TextBox 在其中保留文本,并且文本是读/写的,因为文本会经常更改。

我已经设置了一个新的 .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,我将表设置为名称:设置,类型:字符串,值: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

我对此特别困惑,我正在阅读的文档似乎非常简单,但我似乎无法掌握它。非常感谢任何帮助。谢谢

4

1 回答 1

0

问题是您没有在设置上调用“Save()”,为什么它没有保留,您可以尝试在窗口初始化时加载文本并在退出时将其保存到设置中,您必须调用 Save()才能持久你的设置

编辑

正如您所说,文本框已连接到设置但未保存更改,为此,您必须在设置上调用“保存”,并且在哪里执行此操作都没有关系,例如,您可以为更改的文本添加处理程序:

    <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 在 C# 中将 WPF 属性绑定到 ApplicationSettings 的最佳方法?

于 2013-03-04T14:34:41.883 回答