我是靠谱客的博主 小巧自行车,最近开发中收集的这篇文章主要介绍MVVMLight Page随意导航的实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

对于MVVMlight的INavigationService接口忍不住吐槽了
浪费了我好长时间
我不知道如何实现它的那几个方法
网上找的实现 也是很复杂
不知到是些啥玩意

我遇到的问题
我在主界面建立了一个Frame导航
在这里插入图片描述

然后另外两个页面想通过主界面的Frame进行显示和导航

那么问题来了 我的主界面加载的时候Frame显示了第一个页面
然后业务逻辑就跑了Page里面去了
在这里插入图片描述
按钮是Page里面的方法
那么我现在要导航已经脱离主界面了
怎么办 我点击的事件已经和主界面无关了
那怎么去导航呢

我想去第二个Page

想了很久MVVMLight的IOC机制
既然是控制反转 那么必定需要初始化这些界面
必然是可以通过解析器拿到
我们还记得在ViewModelLocator.cs做过的事情吗
在这里插入图片描述

ServiceLocator就可以获取里面当前的实例

那么我们的LoginPageViewModel也可以做这件事情

using CommonServiceLocator;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.CommandWpf;
using GalaSoft.MvvmLight.Messaging;
using GalaSoft.MvvmLight.Views;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;

namespace PaperHandler.ViewModel
{
    public class LoginPageViewModel : ViewModelBase
    {
        public LoginPageViewModel(){
        
        }
        /// <summary>
        /// 注册码正确
        /// </summary>
        public RelayCommand RegisterCodeRight => new RelayCommand(() =>
        {
            MessageBox.Show("shit");
            //导航
            var page = new Uri("View/PaperHandlerPage.xaml", UriKind.Relative);
            ServiceLocator.Current.GetInstance<MainViewModel>().FrameNav = page;
        });
    }

    


}

得到当前的主界面的实例,那么就可以拿到下面绑定的Frame
再给Frame复制新的页面URI
就实现了导航

最后

以上就是小巧自行车为你收集整理的MVVMLight Page随意导航的实现的全部内容,希望文章能够帮你解决MVVMLight Page随意导航的实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部