2017-09-05 161 views
-1

美好的一天,我有一个我忙于为大学做的应用。用户在MainWindow.xaml上输入数据,我想让他们在这个窗口中输入的数据可以在整个应用程序(名称,姓氏等)中访问。我知道我可以将数据解析到每个窗口中,但我总共有13个Windows 。会话或全局变量c#wpf

有没有一种方式,我可以在WPF全局或会话变量,让我在任何地方访问这些数据。

我已经看了看周围的答案,但使用类等似乎是个不错的方法去我似乎找不到解决方案,将工作。

在此先感谢。

+0

请仅用必要的代码创建一个[最小,完整和可验证的示例](https://stackoverflow.com/help/mcve),否则很难回答。这里的提示[如何提问](https://stackoverflow.com/help/how-to-ask)。 – Sach

+1

[多个视图模型(WPF MVVM)之间状态共享的具体示例](https:// stackoverflow。com/questions/4599802 /具体实例-multi-viewmodels-wpf-mvvm中的state-sharing-sharing- – Stijn

+2

十三个窗口太多了。如果你的教练希望你这样做,你应该照他所说的去做,但要记住他非常有可能犯了疯子。不要坐在前排,以防他咬住。 –

回答

0

Y你总是可以将你的变量标记为公共静态的,所以他们可以从任何地方访问。您可以简单地创建一个静态类来保存所有“全局”数据。

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

也许是最好的办法是:

  • 创建一个类,它是能够保存数据,我们称之为类Person与描述的人所需要的所有变量(名称,surename,等)
  • 创建具有类型Person
  • 从你的MainWindow写你的价值观进入房地产
的公共属性静态类

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

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

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(); 
+0

谢谢,我会放下一点。 –