我正在构建一个基于WPF的销售点系统来练习使用MVVM。 我没有使用任何MVVM框架,代替RelayCommand
类文章中的约什 - 史密斯 http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090030WPF MVVM设计问题
我以前写的一个,没有(仍然使用WPF)应用MVVM模式。
对于数据库访问,我使用了Entity Framework。它看起来像这样:
我的问题是,我该如何实现这一目标使用MVVM? 首先,我已经写使用MVVM的Login
窗口,我的眼前的问题是,
- 如何关闭
Login
窗口(处理它),然后打开MainWindow
? - 在非MVVM版本中,
MainWindow
仅包含截屏的顶部部分,即按钮行。 - 我是否应该进一步将“按钮栏”拆分为它自己的
View
和ViewModel
,仅使用MainWindow
作为将所有内容放在一起的位置? 如果是这样,我怎么代码,单击按钮时,在“按钮栏”的
ViewModel
会告诉MainWindow
的ViewModel
加载相应的View
S(我在非MVVM版本中使用System.Windows.Controls.Page
)进入Frame
?在非MVVM版本,我使用的代码是相当简单:private void btnCheckout_Click(object sender, RoutedEventArgs e) { mainFrame.Navigated += frame_Navigated; var pgCheckout = new pgCheckout(); mainFrame.Navigate(pgCheckout); //The frame }
如果没有,我怎么加载另一个
Page
到Frame
?
如果你真的想要遵循一个MVVM模式,那么你确实需要使用其中的一个框架,MVVM和这些框架就像一只手和一只手套一起走到一起,而没有框架留下一个空手套(仍然看起来像一只手但没有真正具有任何手的功能)。 – slugster 2013-05-10 08:44:49
@slugster:不能说我同意。在开始使用MVVM时不使用框架可以加深对模式的理解并了解框架实际为您提供的内容。一旦你了解了MVVM,你就不会觉得你使用框架“欺骗”了,更重要的是,知道如何使用框架更容易。 – 2013-05-10 08:48:58
@KentBoogaart是的,当你这样说的时候你是对的,虽然框架确实有助于纯化(我做了一个没有框架的MVVM应用程序,它并不特别漂亮)。 – slugster 2013-05-10 09:35:34