c# - 使用 MVVM 模板 WPF 应用程序导航
问题描述
我正在计划 wpfMVVM
应用程序。我读了很多关于MVVM
模式的文章。但我找不到实现导航的最佳实践。
我的场景应用程序从登录屏幕开始,登录后我想要带有导航菜单的页面。我应该如何处理?
我阅读了有关使用Frame
和容器的UserControl
信息。viewModel
但我不清楚我应该使用什么。
解决方案
那么有100000个选项如何实现导航
- 使用数据模板
在您的资源中创建数据模板
<DataTemplate DataType="{x:Type local:YOUR_PAGE_VIEWMODEL1}">
<local:YOUR_PAGE1/>
</DataTemplate>
<DataTemplate DataType="{x:Type local:YOUR_PAGE_VIEWMODEL2}">
<local:YOUR_PAGE2/>
</DataTemplate>
注意:在我们的例子中,YOUR_PAGE_VIEWMODEL1 和 YOUR_PAGE_VIEWMODEL2 具有相同的基类(我们称之为BasePageViewModel)
然后在您的 MainViewModel 中,您可以添加类似这样的内容
class MainViewModel : INotifyPropertyChanged
{
//....
public BasePageViewModel CurrentPage { get; set; } //don't forget to notify
//....
}
最后,您可以将 CurrentPage 绑定到您的框架
<Frame Content="{Binding CurrentPage}"/>
推荐阅读
- git - 在 Azure DevOps 中重用标签
- c# - C# EF Core QueryableExtensions.FirstOrDefaultAsync 奇怪的行为
- java - 如何获得与 sparkWebUi 相同的真实流程
- php - PHP 错误:在 Codeigniter 中只能通过引用传递变量
- database - 一个额外的列,用于解释同一行中的值何时更新
- python - 如何在 webdriver selenium google chrome 中找到没有 id、name 和 xpath 的元素
- python - 如何从源代码构建 MultiNEAT?
- java - FIX 市场数据、QuickFIX 还是其他?
- java - spring boot如何改变默认的classloader使用setContextClassLoader?
- blazor - 如何获取服务器端 Blazor 应用程序的基本 URL