WPF 之间的全局变量 Windows

Global Variables Between WPF Windows

我正在开发我的第一个 WPF 应用程序,我对如何在多个 WPF 之间共享某些信息感到困惑 Windows。每当你说到全局变量时,每个人似乎都惊慌失措,但在 WPF 中,我不确定如何在不使用它们的情况下解决我的问题。

应用程序的工作原理如下;

Window 1 (MainWindow)

This is the main user interface, it shall display a list of files and allow interactions to take place using these files.


Window 2 (File Management)

This window shall allow users to add new files to the application, as well as remove and rename existing files from the list.

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

如何在不全局存储的情况下在两个 windows 之间传递该文件列表?我目前的想法是拥有一个全局可访问的 class,它定义文件属性并存储文件列表。然后我就可以按照以下方式访问它:

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

这被认为是不好的做法吗?有没有更好的方法来处理这个问题或与此相关的任何其他数据?

提前致谢。

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

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

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

我同意 ,但我认为这不是 WPF 问题。每个 WPF window 都在普通 C# class 中描述,并且也像普通 C# 对象一样被实例化。

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

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

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