会话或全局变量c#wpf

会话或全局变量c#wpf,c#,wpf,variables,C#,Wpf,Variables,你好,我有一个应用程序,我正忙着为大学做。用户在MainWindow.xaml上输入数据,我想让他们在此窗口上输入的数据在整个应用程序中都可以访问(姓名等)。我知道我可以将数据解析到每个单独的窗口中,但我总共有13个窗口 是否有一种方法可以在WPF中创建一个全局变量或会话变量,从而允许我在任何地方访问该数据 我四处寻找答案,但使用课堂等方式似乎不是一个好办法,我似乎找不到有效的解决方案 提前感谢。您可以始终将变量标记为public static,这样就可以从任何地方访问它们。您只需创建一个包含所

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

是否有一种方法可以在WPF中创建一个全局变量或会话变量,从而允许我在任何地方访问该数据

我四处寻找答案,但使用课堂等方式似乎不是一个好办法,我似乎找不到有效的解决方案


提前感谢。

您可以始终将变量标记为public static,这样就可以从任何地方访问它们。您只需创建一个包含所有“全局”数据的静态类即可

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

可能最好的做法是:

  • 创建一个能够保存数据的类,让我们调用这个类
    Person
    ,其中包含描述Person所需的所有变量(name、surename等)
  • 创建具有类型为
    Person
  • main窗口
    将值写入属性
现在,您有了一个静态(全局)可访问的数据收集实例,该实例可以扩展,并具有适当的封装和命名

要补充的是:
C#中没有“Session”或“Global”变量。您可以在全局空间中创建类,但不能创建变量和“Session”一词让我想起了WPF显然不是的Web服务。

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

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

可能最好的做法是:

  • 创建一个能够保存数据的类,让我们调用这个类
    Person
    ,其中包含描述Person所需的所有变量(name、surename等)
  • 创建具有类型为
    Person
  • main窗口
    将值写入属性
现在,您有了一个静态(全局)可访问的数据收集实例,该实例可以扩展,并具有适当的封装和命名

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

是否有一种方法可以在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;

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

//set;
Application.Current.Properties["Name"] = "name";
//get:
string name = Application.Current.Properties["Name"].ToString();
是否有一种方法可以在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;

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

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

请仅使用必要的代码创建一个,否则很难回答。以下是提示。十三个窗口可能重复的窗口太多了。如果你的导师希望你这样做,你应该按照他说的去做,但要记住,他很可能犯了刑事罪。不要坐在前排,以防万一他厉声说道。请只使用必要的代码创建一个,否则很难回答。这里有一些提示。十三个窗口可能重复的窗口太多了。如果你的导师希望你这样做,你应该按照他说的做,但要记住,他很有可能犯了刑事罪。不要坐在前面w、 以防他打断。谢谢。我将尝试一下。Application.Current.Properties[“Name”]=“Name”;它将不起作用。在我的情况下,我有usercontrol,但它不起作用。谢谢,我将尝试一下。Application.Current.Properties[“Name”]=“Name”;它将不起作用。在我的情况下,我有usercontrol,但它不起作用。