public Page2() { InitializeComponent(); Loaded += (sender, e) => { DataContext = new Page2ViewModel(this); }; }解释一下为什么要这样写。因为是使用MVVM的时候,UI与业务逻辑解耦,此时页面之间通讯的时候就很难获得传递的参数。所以我想到把NavigateContext,NavigateService等属性从View层传入到VM层,这样就可以在VM层使用NavigateContext解析URL中的QueryString,使用NavigateService实现导航,并且获取BackStack集合等等操作。这样得到了View的Page的引用就能很容易在VM层处理导航和获取查询字符串了,但是由于我刚开始学习MVVM,不知道这样会不会违背了MVVM的思想,请各位指正
1 回答
萧十郎
TA贡献1815条经验 获得超12个赞
楼上没理解我的意思(我没表达清楚)MVVM的思想是View与ViewModel解耦,但是我却传入了View对象的引用,由于需要传入View对象的引用,所以ViewModel的构造将晚于View(所以我在Loaded中才创建ViewModel)。
- 1 回答
- 0 关注
- 716 浏览
添加回答
举报
0/150
提交
取消