对于MVVMlight的INavigationService接口忍不住吐槽了
浪费了我好长时间
我不知道如何实现它的那几个方法
网上找的实现 也是很复杂
不知到是些啥玩意
我遇到的问题
我在主界面建立了一个Frame导航
然后另外两个页面想通过主界面的Frame进行显示和导航
那么问题来了 我的主界面加载的时候Frame显示了第一个页面
然后业务逻辑就跑了Page里面去了
按钮是Page里面的方法
那么我现在要导航已经脱离主界面了
怎么办 我点击的事件已经和主界面无关了
那怎么去导航呢
我想去第二个Page
想了很久MVVMLight的IOC机制
既然是控制反转 那么必定需要初始化这些界面
必然是可以通过解析器拿到
我们还记得在ViewModelLocator.cs做过的事情吗
ServiceLocator就可以获取里面当前的实例
那么我们的LoginPageViewModel也可以做这件事情
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39using 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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复