WPF窗口之间的全局变量

本文关键字:全局变量 之间 窗口 WPF | 更新日期: 2023-09-27 18:12:12

我正在开发我的第一个WPF应用程序,我很困惑如何在多个WPF Windows之间共享一些信息。每当你说全局变量时,每个人似乎都很生气,但在WPF中,我不确定如果不使用全局变量,我该如何解决我的问题。

应用程序的工作方式如下;

窗口1 (MainWindow)

这是主要的用户界面,它将显示一个文件列表,并允许使用这些文件进行交互。


窗口2(文件管理)

此窗口允许用户向应用程序添加新文件,以及从列表中删除和重命名现有文件。

(这是一个高层次的概述,我简化了应用程序的功能,只是为了更容易解释)。

我如何在两个窗口之间传递文件列表而不全局存储它?我目前的想法是有一个全局可访问的类,它定义了文件属性,也存储了文件列表。然后我就可以通过以下行访问它:

App.Core.File.File
App.Core.File.FileList

这被认为是不好的做法吗?有更好的方法来处理这个或其他数据吗?

提前谢谢你。

(注意:目前不需要持久性,所以我没有将文件列表存储在XML文件或某种类型的DB中)

WPF窗口之间的全局变量

我同意b.k.的回答,但我不认为这是WPF的问题。每个WPF窗口都是在一个普通的c#类中描述的,并且也像一个普通的c#对象一样被实例化。

所以你的问题应该是:如何在两个c#对象之间传递数据?

最简单的方法就是从一个对象实例化另一个对象,这样你就可以通过方法和/或事件传递数据。

对于WPF,还有其他选项,改进了数据的表示,但它们更复杂。因此,如果您是c#编程新手,MVVM模式可能真的很难,您应该从c#基础开始。

我会研究MVVM模式。虽然有许多工具可以让您完成上述任务,但从个人经验来看,我建议使用MVVM Light框架http://www.mvvmlight.net/。大多数其他成熟的框架也能够完成这一点,或者您可以推出自己的实现。MVVM Light包含在视图模型之间发送消息的功能,这将解决您的问题。我已经用了几年了,还没有收到很多抱怨。

这是MSDN关于这个话题的一篇文章:https://msdn.microsoft.com/en-us/magazine/jj694937.aspx