页面旨在用于导航应用程序(通常带有后退和前进按钮)。页面切换必须托管在 NavigationWindow 或 Frame 中。
Window窗体只是普通的WPF应用程序Window,但可以通过 Frame 容器托管 Pages页面可用于XAML 浏览器应用程序,您也可以使用 Frame 控件将它们加载到您自己的应用程序中,或者您可以使用NavigationWindow并创建类似浏览器的应用程序。
在WPF程序中实现导航要解决以下问题:
1)如何使用 MVVM 模式在主视图上加载不同的视图?
2)如何实现导航视图模型?
3) 如何控制打开或活动视图的最大数量?
4) 如何在打开的视图之间切换?
有两种方式实现面页切换效果,分别用NavigationWindow或Frame控件。
第一种方式使用NavigationWindow窗口加载Page页面,NavigationWindow类是从Window类派生而来的,因此它继承了Window的所有属性,例如方法、属性和事件。导航窗口提供后退和前进按钮,用于导航到我们之前访问过或尚未访问过的页面。
要创建基于导航窗口的应用程序,重写NavigationWindow类,在类中添加标题栏高度、窗体圆角、拖动大小边框宽度、边框阴影宽度等依赖属性。
接下来自定义NavigationWindow样式。
在Newbeecoder.UI控件库中样式就封装好了,用实例来演示如何用NavigationWindow加载页面和切换。
第二种方式用Frame 容器托管 Pages页面。
在MainWindow的XAML 代码创建 Frame 控件并设置其 Content属性以在其中加载 XAML 页面。Newbeecoder.UI控件库的NbFrame添加AnimationMode实现页面切换动画效果。
下面通过视频演示UI控件库功能和代码:
C# WPF新版开源控件库:Newbeecoder.UI
Demo下载地址: