【问题标题】:How to store user input data across pages/windows and display it all in a page without database如何跨页面/窗口存储用户输入数据并将其全部显示在没有数据库的页面中
【发布时间】:2019-10-04 17:52:13
【问题描述】:

我正在编写一个 wpf 应用程序,它可能有几页供用户在文本框中输入信息或勾选提供的复选框。我需要存储所有这些数据并在用户回答完所有要求的问题后将其打印出来。

执行此操作的最佳方法是什么?我是创建一个类文件来存储数据,创建一个全局数组来存储这些项目还是有更好的方法?谢谢。

【问题讨论】:

  • 当您关闭应用程序时会发生什么?如果您需要跨会话存储或者这是大量数据,则序列化到磁盘。如果没有,则使用依赖注入和单例类。也许具有复杂对象的属性。
  • @Andy 存储的用户数据可能只是临时的,因为我可能只是添加一个选项来打印显示的输出或保存为文件
  • 如果您要跨层和视图共享,那么我自己更喜欢依赖注入。您可以轻松地模拟任何自动化测试,并且类清楚地表明它们的依赖关系,因为它们在 ctor 上很明显。如果它们很大,则使用注入的调解器,这样您就可以更好地控制它们的处置。调解器本身就是一种容器。

标签: c# .net wpf user-input


【解决方案1】:

我发现存储全局变量的最简单方法是使用应用程序的设置,请按照以下步骤操作:

  1. 访问应用程序设置的菜单。 打开您的 WPF 项目并转到“项目\[您的应用程序名称]属性...”,然后单击“设置”选项卡。

  2. 创建一个设置并将其命名为“GlobalText”,确保它设置为字符串类型并在用户范围内并将值保持为空,您现在可以关闭应用程序设置的窗口,确保保存工作.

  3. 现在要为您刚刚创建的设置分配一个值,只需使用以下代码:

    Properties.Settings.Default.GlobalText = TxtBox1.Text;
    
  4. 现在要读取您存储的值,请使用以下代码:

    TxtBox1.Text = Properties.Settings.Default.GlobalText;
    
  5. 如果您希望保存这些值,请使用以下代码:

    Properties.Settings.Default.Save();
    

【讨论】:

  • 如果我不保存设置,关闭应用程序时会删除这些值吗?
【解决方案2】:

创建一个类来保存用户信息,并通过构造函数注入将其传递给每个视图(或者如果您使用 MVVM,最好是视图模型)。这可能是最简单的方法。

根据您的页面的简单程度,您可能会对所有页面使用相同的 ViewModel,这会使其更加简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多