【问题标题】:Global Variables Between WPF WindowsWPF 窗口之间的全局变量
【发布时间】:2015-09-11 08:12:36
【问题描述】:

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

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

窗口 1(主窗口)

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


窗口 2(文件管理)

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

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

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

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

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

提前谢谢你。

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

【问题讨论】:

    标签: c# wpf variables global-variables global


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢,但是我对 C# 并不陌生,而只是 WPF 的想法,我认为它们是“Windows”的事实让我有些害怕,我从没想过将它们视为正常对象。
    • 我明白你的意思,WPF 真的很大很强大,而且它真的很难“正确”使用所有功能。和 WinForms 一样,我用了 2 年的 WPF,直到我学会了如何使用 MVVM 模式。
    • 我同意 MVVM 可能会让新手望而生畏。我立即推荐它的原因是因为我在两年半前开始编程。当我深入研究 C# 时,我选择 WPF 作为我的 UI 框架,并决定从一开始就开始做事——因此我选择作为新手深入研究 MVVM。这有点痛苦,但对我来说是最好的。我现在对 WPF 和 MVVM 非常满意,以至于在我的工作流程中我什至都没有想到它……这是很自然的事情。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      相关资源
      最近更新 更多