1

我的应用程序旨在加载 XML 文件并显示错误(如果有)。

我遇到的问题是如何在不耦合的情况下在屏幕上同时显示(XML 和错误)(我的应用程序当前可以工作)。

我的应用程序目前看起来像(请不要嘲笑或评论我正在上 Photoshop\UI 课程):

在此处输入图像描述

棕色是称为 XmlView 的不同视图。
红色框是我希望显示错误的地方。

因此,用户单击 File->Open,选择文件,.XML 内容显示在我的 XmlView(棕色)中,我的错误消息显示为红色。这行得通,但是我有一种可怕的感觉,我的设计很糟糕,因为我已经完全耦合了我的 MainWindow 和 XmlView。

我的工作方式是,当用户选择一个有效的 XML 文件(从 File->Open)时,我创建我的 XmlView 的一个实例并将它绑定到我的 MainWindow 类的 Views 属性。我的 XmlView 采用 1 个参数,即 MainWindow 类型。

因此,在我的 XmlView 中,要更新我的 ErrorList,我会编写类似于

_mainWindow.ErrorList.Add(//newError)

但这现在意味着我的 XmlView 知道我认为不想要的 MainWindow。

所以,最后,我的问题!我的设计很差还是可以?

4

1 回答 1

1

如果你在做 MVVM ,你应该考虑使用 MVVM 框架

这取决于加载 XML 的责任是谁,但我建议使用XmlViewModel. 而不是MainViewModel.

在这种情况下,MainViewModel应该只是其他视图模型的导体。在您的第一种情况下,它将实例化XmlViewModel,传递文件路径并将其设置为当前视图。

XmlViewModel负责加载和验证 XML。它也可以有一个显示验证错误的子视图模型。它应该异步加载 XML,并带有某种形式的忙碌通知。

可能需要执行许多视图模型,因此MainViewModel如果您要使用诸如Caliburn.Micro之类的框架,这将是一个导体类型

于 2013-04-09T11:35:24.593 回答