会话或全局变量c#wpf

时间:2017-09-05 22:51:34

标签: c# wpf variables

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:0)

您始终可以将变量标记为公共静态,以便可以从任何位置访问它们。你可以简单地创建一个静态类来保存你所有的"全局"数据。

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

可能最好的办法是:

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

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

要添加的内容: 没有" Session"或者"全球" C#中的变量。您可以在全局空间中创建类,但不能创建变量和单词" session"让我想起WPF显然不是一个网络服务。

答案 1 :(得分:0)

  

有没有办法可以在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();