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
就实现了导航
标签:界面,Frame,MvvmLight,System,MVVMLight,using,导航,Page 来源: https://blog.csdn.net/weixin_38083655/article/details/110261268