WPF的页面导航

工作中之前接触过的WPF程序一直是使用TabControl作不同页面间的切换,每个Tab负责独立的功能,清晰简捷,所以一直就没有动力研究WPF自带的页面导航。(虽然接触过使用页面导航的WPF项目,也并没有去了解,而是似懂非懂地过去了。)

直到最近做的一个项目,用的还是TabControl,但在某个Tab里面,做的任务有些复杂,导致UI在操作前后会有很大的变化。很自然的想法就是在这个Tab中使用两个view(我并没有指明是UserControl还是Page),来回切换。然而粗略地调查了一下之后觉得实现起来有点麻烦,然后这个Tab也不是特别复杂,于是就硬着头皮使用了笨方法:把所有控件都画上去,后台的ViewModel用各种属性绑定控制各个控件的隐藏、显示、以及位置。

实现的效果很好,但终究是有些不踏实。于是最近趁着项目间歇,花时间看了一下WPF的页面导航,以下是学习总结。

1. WPF自带的页面导航

网上搜到了一篇WPF Navigation的博客,讲解地很到位。《WPF编程宝典》2010版的第24章内容差不多,也讲的很全面。

WPF的页面导航其实是微软在发明了Inductive User Interface 后引入的。据说用户往往觉得web应用要比桌面应用更好用,因此桌面应用着急了,就开始学web应用了。

WPF页面导航的几个关键组件:负责导航的NavigationService,可以导航的用户界面Page,以及最常用的导航容器Frame。在上文博客中还介绍了页面的生命周期,很有意思。还有更高级的PageFunction等等,很好很强大。再回头看看以前的那个使用导航的项目,觉得看懂了好多~

2. 不使用页面导航来实现页面跳转

然而有人表示不服。她是这样说的:“我一开始也被如何搞定页面导航弄糊涂了。不过,我坚信应该让ViewModel去做一切的工作,而View只是个漂亮的界面而已。我不想在界面上弄个按钮然后带段代码来切换页面。”

她想到了一个很漂亮的方案来实现页面跳转。分别在下面两个博客里。

第一篇博客说,你只需要在你的ViewModel里面加一个Property,叫CurrentView,然后根据情况为这个属性赋上不同的ViewModel。在主界面里,用一个ContentControl来绑定CurrentView。至于如何渲染界面,则采用DataTemplate!妙哉!

第二篇博客则补充了如何在application中加入一个ApplicationViewModel,来管理不同的ViewModel的切换。

最后她还推荐去看一下WPF的消息系统,如MVVM Light’s Messenger, 或 Microsoft Prism’s EventAggregator (to broadcast ChangePage commands from any ViewModel so you wouldn’t need to find the ApplicationViewModel to execute the ChangePageCommand, however that’s for another day

是啊,that's for another day... 改天吧~

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WPF Bootstrap导航是一种通过使用WPF(Windows Presentation Foundation)技术和Bootstrap框架来创建导航菜单的方式。WPF是一种用于开发Windows应用程序的UI框架,而Bootstrap是一种流行的HTML,CSS和JavaScript框架,用于构建响应式和美观的网页设计。 在WPF Bootstrap导航中,我们可以结合WPF的强大功能和Bootstrap的灵活性,轻松创建出具有良好用户体验的导航菜单。这种导航菜单通常具有可自定义的外观样式和交互效果,能够展示丰富的内容和导航选项。 使用WPF Bootstrap导航有以下几个步骤: 1. 引入Bootstrap框架:首先,在WPF应用程序中,需要导入Bootstrap的相关CSS和JavaScript文件,以便使用其样式和功能。 2. 创建导航控件:接下来,通过使用WPF的控件和布局功能,创建一个导航控件来容纳导航菜单的各个选项。可以使用面板控件,如StackPanel或Grid来布局这些选项。 3. 设置样式和交互效果:与Bootstrap一样,WPF样式的定义和修改非常灵活。可以使用WPF的样式和触发器功能来自定义导航菜单的外观和交互行为。例如,在鼠标悬停或选中菜单项时改变其背景颜色或添加动画效果。 4. 增加导航选项:根据实际需求,向导航菜单中添加所需的导航选项。可以使用WPF的按钮、菜单项或超链接等控件来实现。 5. 导航功能实现:最后,为每个导航选项添加导航功能。这可以通过WPF中的命令功能来实现,例如,通过指定导航选项与具体功能方法的绑定。 总之,WPF Bootstrap导航是一种利用WPF和Bootstrap技术结合的方式,能够轻松创建出具有强大功能和美观外观的导航菜单。无论是用于桌面应用还是Web应用,都能提供良好的用户导航体验。 ### 回答2: WPF Bootstrap 导航是一种在WPF 应用程序中使用Bootstrap 框架进行页面导航的技术。Bootstrap 是一个开源的前端框架,提供了丰富的页面组件和样式,可以快速构建美观、响应式的网页。 在 WPF 应用程序中,我们可以借助 MahApps.Metro 库来集成Bootstrap和WPF,并实现导航功能。MahApps.Metro是一个基于WPF的开源库,提供了与Boostrap类似的外观和样式。 使用 WPF Bootstrap 导航,我们可以轻松地创建具有现代化外观和导航功能的应用程序。首先,需要导入 MahApps.Metro 库和相关资源。然后,我们可以使用MetroWindow 控件作为主窗口的基类。MetroWindow 提供了类似标题栏、窗口外观等功能。 为了实现页面导航,我们可以使用 Frame 或者 ContentControl 控件。Frame 控件可以加载具有导航功能的页面,而 ContentControl 控件可以在同一个页面内部切换不同的内容。 在具体的页面中,我们可以使用 MetroTabItem 控件来创建导航标签,每个标签对应一个页面。当用户点击导航标签时,可以切换到对应的页面。 此外,WPF Bootstrap 导航还可以集成其他功能,例如侧边栏菜单、折叠式菜单、模态窗口等。这些功能可以提供更好的用户体验,使得应用程序更具吸引力。 总之,WPF Bootstrap 导航是一种使用Bootstrap框架和MahApps.Metro库实现页面导航的技术。它能够帮助开发人员快速构建现代化外观和具备导航功能的WPF应用程序。 ### 回答3: WPF Bootstrap是一个用于创建富客户端应用程序的开发框架,它结合了WPF(Windows Presentation Foundation)和Bootstrap(前端框架)的特性和优势。而导航功能是WPF Bootstrap框架中的一个重要组成部分。 导航是指在应用程序中切换不同页面或视图的过程。WPF Bootstrap框架通过导航功能,能够帮助开发者实现在应用程序中高效地管理和切换页面。其中,导航功能主要包括页面导航导航栏、导航前进后退按钮以及导航过程中的页面传递和参数传递等。 在WPF Bootstrap框架中,导航通常通过页面或视图导航器来实现。开发者可以通过配置导航器来定义页面之间的导航关系。导航栏是一种常见的页面导航方式,它通常位于应用程序的顶部或侧边,提供了切换页面的菜单或按钮。通过导航栏,用户可以在不同页面之间自由切换,并且能够清晰地看到当前所处的页面导航前进后退按钮是另一种常见的导航方式,它通常位于页面底部,用于在已浏览的页面历史记录中进行前进和后退操作。通过导航前进后退按钮,用户可以方便地回退到之前浏览过的页面。 此外,在页面导航过程中,WPF Bootstrap框架还支持页面之间的数据传递和参数传递。开发者可以在页面之间传递各种类型的数据,以满足应用程序的需求。例如,在导航到新页面时,可以将上一个页面的选定项或用户输入的数据传递给新页面进行展示或处理。 综上所述,WPF Bootstrap导航功能提供了丰富的页面导航方式和灵活的数据传递机制,帮助开发者实现优雅的界面跳转和页面之间的交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值