首页 > 其他分享 >WPF在MVVM模式下怎么实现导航功能

WPF在MVVM模式下怎么实现导航功能

时间:2024-11-10 22:18:45浏览次数:3  
标签:代码 MVVM xaml 跳转 new WPF 导航 frame 页面

在mvvm的模式下wpf通过frame实现页面跳转_哔哩哔哩_bilibili

视频讲解同步可观看

如下图,我们要实现点击左侧的菜单,在右侧展示不同的页面

实现代码如下:

一、如何从主窗体跳转到页面。

1、在mainwindow.xaml的菜单栏代码里加入如下代码

  1.  <Border BorderBrush="#3c5254" BorderThickness="3">
  2.      <Button
  3.          Margin="0,3"
  4.          HorizontalAlignment="Stretch"
  5.          Background="#2f3366"
  6.          Command="{Binding NavigateToPageCommand}"
  7.          CommandParameter="Pages/DragPage.xaml"
  8.          Content="控件拖拉拽"
  9.          Cursor="Hand"
  10.          Foreground="White" />
  11.  </Border>

2、在mainwindows.xaml里添加一段代码里加一个导航容器,用于加载、显示和缓存页面,一般是page对像。

  1.  <Frame
  2.      Name="MainFrame"
  3.      Grid.Row="1"
  4.      NavigationUIVisibility="Visible" />

3、在MainWindows.xaml.cs隐藏代码里做如下处理,把2中的frame通过构造函数的方式传到viewmodel中,这段代码放到默认构造函数中

  1.  DataContext = new MainWindowViewModel(this.MainFrame);
  2.  //注册页面加载完成事件
  3.  this.Loaded += MainWindow_Loaded;

4、实现主页面加载方法。

  1.  private void MainWindow_Loaded(object sender, RoutedEventArgs e)
  2.  {
  3.      //在页面加载完成之后跳转到Pages/MainPage.xaml
  4.      MainFrame.Navigate(new Uri("Pages/MainPage.xaml", UriKind.Relative));
  5.  }

6、在viewmodel中实现通过构造函数接收Frame

  1.    public MainWindowViewModel(Frame frame)
  2.    {
  3.        _frame = frame;
  4.    }

7、实现通用的页面跳转方法

  1.     private ICommand _navigateToPageCommand;
  2.     public ICommand NavigateToPageCommand
  3.     {
  4.         get
  5.         {
  6.             return _navigateToPageCommand ?? new RelayCommand(NavigateToPage,null);
  7.         }
  8.     }
  9.     private void NavigateToPage(object? page)
  10.     {
  11.         try
  12.         {
  13.             string pageUri = page as string;
  14.             if (pageUri != null)
  15.                 _frame.Navigate(new Uri(pageUri, UriKind.Relative));
  16.         }
  17.         catch (Exception ex)
  18.         {
  19.         }
  20.       
  21.     }

标签:代码,MVVM,xaml,跳转,new,WPF,导航,frame,页面
From: https://blog.csdn.net/weixin_50541844/article/details/143668235

相关文章

  • WPF 集合操作进阶:提取特定字段、转换 ObservableCollection 和过滤数据
    文章目录1.引言2.从List<T>提取特定字段3.将List<T>转换为observableCollection<T>4.过滤List<T>集合5.总结6.完整示例代码1.引言在C#开发中,集合操作是非常常见的任务,特别是在数据处理和用户界面设计中。本文将介绍如何从List<T>中提取......
  • An indoor service area determination approach for pedestrian navigation path pla
    目的:人们在导航时往往需要设定具体的起点和终点,但有时他们可能只想找到某个类型的地方,比如最近的商店或厕所。需求?最短距离、最快速路径、最简单或最少转弯的路径、最少或最多空间访问、最少障碍物的路径、一般安全路径、避开动态障碍物的安全路径、健康最优路径(例如特定程度的卡......
  • WPF+MVVM案例实战与特效(二十六)- 3D粒子方块波浪墙效果实现
    文章目录1、案例效果2、案例实现1、文件创建2.功能代码实现3、粒子功能应用1、前端布局与样式2、代码解释2、后端功能代码1、案例效果2、案例实现1、文件创建打开Wpf_Examples项目、Models文件夹下创建3D粒子模型类ParticleCubeWaveMode......
  • WPF MVVM入门系列教程(四、数据绑定演示)
    在前面的文章中,介绍了数据绑定功能及使用方法。本文会使用一些数据绑定的实例来进行演示。演示过程中,涉及了数据模板功能,如果对数据模板功能还不熟悉,可以参考下面的链接:https://learn.microsoft.com/zh-cn/dotnet/desktop/wpf/data/data-templating-overview?view=netframeworkd......
  • 第三十四章 Vue路由进阶之声明式导航(导航高亮)
    目录一、导航高亮1.1.基于语法1.2.主要代码 二、声明式导航的两个类名2.1.声明式导航类名匹配方式2.2.声明式导航类名样式自定义 ​2.3.核心代码一、导航高亮1.1.基于语法在Vue中通过VueRouter插件,我们可以非常简单的实现实现导航高亮效果VueRouter提......
  • CommunityToolkit.Mvvm框架
    .NETWPFCommunityToolkit.Mvvm框架1源生成器1.1ObservablePropertyAttribute&RelayCommandAttributeusingCommunityToolkit.Mvvm.ComponentModel;usingCommunityToolkit.Mvvm.Input;usingSystem.Windows;namespaceTestCommunityToolkit._1_Attribute{pub......
  • WPF 抖动动画
    .NETWPF抖动动画1Demo2Code<!--水平抖动--><ButtonContent="HelloWorld"><Button.RenderTransform><TranslateTransformx:Name="translateTransform"/></Button.RenderTransform><Butto......
  • WPF StatusBar控件 这一块也能放一些东西
    WPFStatusBar控件这一块也能放一些东西  StatusBar控件一般在窗口的底部。用于显示有关应用程序当前状态的各种信息,如光标位置、字数、任务进度等。<Windowx:Class="WpfApp14.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"......
  • WPF 中 NavigationWindow 与 Page 的继承关系解析
    官网解析:NavigationWindow类   |    Page类publicclassBaseWindow:NavigationWindow{}publicpartialclassCountPage:Page{}都是创建的WPF界面有什么区别?在WPF(WindowsPresentationFoundation)开发中,我们经常需要设计具有多个页面的应用程序。在......
  • WPF Menu控件 我也有个不能点菜的菜单
    WPFMenu控件我也有个不能点菜的菜单 Windows应用程序最常见的部分之一是菜单,有时也称为主菜单,因为应用程序中通常只有一个。菜单很实用,因为它提供了很多选项,只占用很少的空间。向其中添加菜单项非常简单-您只需向其中添加MenuItem元素,并且每个MenuItem可以具有一系列......