我的应用程序旨在加载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。
所以,最后,我的问题!我的设计很差还是没关系?
答案 0 :(得分:1)
您应该考虑using an MVVM framework if you are doing MVVM。
这取决于加载XML的责任,但我建议使用XmlViewModel
,而不是MainViewModel
。
在这种情况下,MainViewModel
应该只是其他视图模型的指挥。在第一种情况下,它将实例化XmlViewModel
,传递文件路径并将其设置为当前视图。
XmlViewModel
将负责加载和验证XML。它也可能有一个显示验证错误的子视图模型。它应该以某种形式的忙碌通知异步加载XML。
MainViewModel
可能想要执行许多视图模型,因此如果您要使用Caliburn.Micro之类的框架,那么这将是conductor type。