【问题标题】:How to save changes on UWP?如何在 UWP 上保存更改?
【发布时间】:2019-10-14 22:17:58
【问题描述】:

我有一个简单而基本的问题:如何让我的应用在文本框和其他可编辑工具(如单选按钮/颜色等)上保存更改?

我正在 Visual Studio 上编写 UWP 应用程序。 当我在 VS 上午餐应用程序时,我在文本框中输入的文本会在我关闭应用程序时消失。

对不起,我几天前才开始,找不到解决方案...

谢谢!

【问题讨论】:

    标签: c# visual-studio uwp


    【解决方案1】:

    当您关闭应用程序时,您需要在本地存储该数据。因此,当您重新启动应用程序时,首先从该本地存储中获取数据并将其保存或附加到您的文本框中。

    您可以使用以下两种方式来存储它。

    1. 创建一个文本文件并将您的数据存储在其中,这样您就可以在应用程序的任何时候获取数据 已重新启动。
    2. 您可以使用设置来存储本地数据。请查看以下链接以获取更多信息。 https://docs.microsoft.com/en-us/windows/uwp/get-started/settings-learning-track

    【讨论】:

    • 我确实找到了一些关于这个的话题。但是我必须把那些 ApplicationDataContainers 代码放在哪里?它在 App.xaml.cs 页面中吗?如果有,在哪里?
    • 如果您将数据存储在文本文件中,则无需担心存储位置。只需提供应用文件夹的路径即可。
    【解决方案2】:

    通过 localSettings,您可以将数据本地存储在您的机器中。

    public static class LocalSettingsHelper
    {
        private static ApplicationDataContainer _localSettings = ApplicationData.Current.LocalSettings;
    
        /// <summary>
        /// Create Local Settings storage Container
        /// </summary>
        /// <typeparam name="T">Type</typeparam>
        /// <param name="container">Container</param>
        /// <param name="containerValue">ContainerValue</param>
        /// <param name="value">Value</param>
        internal static void SetContainer<T>(string container, string containerValue, T value)
        {
            var containerName = _localSettings.CreateContainer(container, ApplicationDataCreateDisposition.Always);
            _localSettings.Containers[container].Values[containerValue] = value != null ? JsonConvert.SerializeObject(value) : null;
        }
        /// <summary>
        /// Get Local Settings Container 
        /// </summary>
        /// <typeparam name="T">Type</typeparam>
        /// <param name="container">Container</param>
        /// <param name="containerValue">ContainerValue</param>
        /// <returns>Value as Type</returns>
        internal static T GetContainerValue<T>(string container, string containerValue)
        {
            var containerName = _localSettings.CreateContainer(container, ApplicationDataCreateDisposition.Always);
            string currentValue = _localSettings.Containers[container].Values[containerValue] as string;
            if (currentValue == null)
            {
                return default(T);
            }
            return JsonConvert.DeserializeObject<T>(currentValue);
        }
    }
    

    【讨论】:

    • 太棒了!我会试试的。我必须将这些代码放在相关页面中吗?还是我必须在 App.cs 页面上写这些?
    • 将此作为新类添加,或者您可以将这些静态方法放入您的 App.cs 中
    • 好吧,我试过了,但是 Json 函数不起作用...我忘记了什么吗?
    • 你需要在你的项目中添加Newtonsoft.Json NuGet包
    • 好吧,我确实添加了这个并且项目工作正常。仍然没有保存任何东西。是因为我仍然使用VS生成它吗?应用程序完成后,我必须在午餐后尝试 .exe 吗?
    猜你喜欢
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 2020-08-10
    • 1970-01-01
    • 2014-07-09
    相关资源
    最近更新 更多