我注意到许多WPF MVVM框架似乎避免使用NavigationWindow和Page控件,而是使用嵌套的UserControls来组合页面。
NavigationWindow和Page提供了在日志中启用后退和前进导航以及在页面之间传递数据的简便方法。我看过的大多数MVVM框架都以各种方式重新实现了这些功能。
有没有特定的原因要避免使用NavigationWindow和Page?
我注意到许多WPF MVVM框架似乎避免使用NavigationWindow和Page控件,而是使用嵌套的UserControls来组合页面。
NavigationWindow和Page提供了在日志中启用后退和前进导航以及在页面之间传递数据的简便方法。我看过的大多数MVVM框架都以各种方式重新实现了这些功能。
有没有特定的原因要避免使用NavigationWindow和Page?
http://msdn.microsoft.com/en-us/library/system.windows.navigation.navigationwindow.aspx
我刚刚发现了UserControls和Pages之间的另一个区别:页面不能用作数据模板。
例如,如果您正在使用MVVM风格创建应用程序,您可能希望以下内容能够正常工作:
<DataTemplate DataType="{x:Type ViewModels:ProjectDashboardViewModel}">
<Views:ProjectDashboardView />
</DataTemplate>
嗯,你仍然需要使用用户控件来创建可重用的子组件,但是对于应用程序架构,实际上取决于用例。如果你正在构建一个典型的web应用程序,业务/导航应用程序应该就可以了。如果你正在写游戏,那就不一定了。同样,如果你在做互动广告或媒体播放器之类的事情,也是如此。