【问题标题】:Session or Global Variables c# wpf会话或全局变量 c# wpf
【发布时间】:2018-02-14 07:19:06
【问题描述】:

您好,我有一个正在忙于上大学的应用。用户在 MainWindow.xaml 上输入数据,我想让他们在此窗口中输入的数据在整个应用程序中可访问(姓名、姓氏等。我知道我可以将数据解析到每个单独的窗口中,但我总共有 13 个 Windows .

有没有一种方法可以让我在 WPF 中创建一个全局变量或会话变量,让我可以在任何地方访问该数据。

我已经四处寻找答案,但使用类等似乎是一个不好的方法,我似乎找不到可行的解决方案。

提前致谢。

【问题讨论】:

标签: c# wpf variables


【解决方案1】:

有没有一种方法可以让我在 WPF 中创建一个全局变量或会话变量,让我可以在任何地方访问该数据。

创建一个具有静态属性的类:

public class ApplicationContext
{
    public static string Name { get; set; }
    public static string Surname { get; set; }
}

然后,您可以从应用程序中的任何其他类访问这些属性:

//set:
ApplicationContext.Name = "name...";
//get:
string name = ApplicationContext.Name;

如果您出于某种原因不想创建自己的类,也可以使用 Application.Current.Properties 集合:

//set;
Application.Current.Properties["Name"] = "name";
//get:
string name = Application.Current.Properties["Name"].ToString();

【讨论】:

  • 谢谢,我会尝试一下。
  • Application.Current.Properties["Name"] = "name";不起作用。就我而言,我有用户控件,但它不起作用。
【解决方案2】:

您始终可以将变量标记为公共静态变量,以便可以从任何地方访问它们。您可以简单地创建一个包含所有“全局”数据的静态类。

另一种选择是将MainWindow 类的属性设为静态,但这会导致将信息聚集到一个实际上是接口而非存储的类上。

可能最好的做法是:

  • 创建一个能够保存数据的类,让我们调用这个类Person,并使用描述此人所需的所有变量(姓名、确定姓名等)
  • 创建一个具有Person 类型的公共属性的静态类
  • 从您的MainWindow 将您的值写入属性

你去吧,你有一个静态(全局)可访问的数据集合实例,可以扩展并具有适当的封装和命名。

补充一点: C# 中没有“会话”或“全局”变量之类的东西。您可以在全局空间中创建类,但不能创建变量,“会话”这个词让我想起了 WPF 显然不是的 Web 服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 2021-03-01
    • 2014-03-20
    相关资源
    最近更新 更多