silverlight – MVVM Light,Windows Phone,View和ViewModel页面之间的导航

silverlight – MVVM Light,Windows Phone,View和ViewModel页面之间的导航,第1张

概述我有一个页面,你基本上选择一组选项(配置),然后你去下一页,你做一些东西 使用MVVM Light工具包,我有一个viewmodel绑定到第一页的视图.当用户点击按钮时,它会重定向到另一个视图,这将是第二页 即: Page2Command = new DelegateCommand((obj) => Messenger.Default.Send<Uri>(new Uri("/DoStuf 我有一个页面,你基本上选择一组选项(配置),然后你去下一页,你做一些东西
使用MVVM light工具包,我有一个viewmodel绑定到第一页的视图.当用户点击按钮时,它会重定向到另一个视图,这将是第二页
即:

Page2Command = new DelegateCommand((obj) =>     Messenger.Default.Send<Uri>(new Uri("/DoStuffVIEw.xaml",UriKind.relative),Common.CommonResources.GoTodoStuffRequest)) });

问题是,第二个视图的视图模型(我看到它的方式)在构造函数中有几个参数,它们基本上是在第一页上设置的配置的依赖项.

即:

public DoStuffviewmodel(ICollection<Note> availableNotes,SoundMappers soundType){}

问题出在这里..如何用第一页上用户动态选择的数据实例化viewmodel?
我无法使用MVVM光提供的viewmodelLocator模式,因为这些视图模型没有任何依赖关系,它们只是它们自己(或者它们可以从数据库,文件或其他任何方式检索数据,但它们没有任何动态输入数据).我可以通过视图的构造函数来实现它,在那里实例化viewmodel,并为视图的DataSource分配新创建的视图模型,但我认为这样做并不是很好.
建议?

解决方法 我看到你使用Messenger类发送消息,因此你熟悉MVVM中的消息传递.您必须定义自己的消息类型,该类型应接受第1页的参数:

public class Page2viewmodelCreateMessage : MessageBase{    public ICollection<Note> AvailableNotes{get;set;}    public SoundMappers SoundType{get;set;}    public Page2viewmodelCreateMessage ()    {    }    public Page2viewmodelCreateMessage(ICollection<Note> availableNotes,SoundMappers soundType)    {        this.AvailableNotes = availableNotes;        this.soundType = soundType;    }}

您必须使用参数发送Page2viewmodelCreateMessage实例并在导航时发送它:

var message = new Page2viewmodelCreateMessage(myAvailableNotes,mySoundType)Messenger.Default.Send(message);

在Page2上,您必须注册接收类型为Page2viewmodelCreateMessage的消息:

Messenger.Default.Register<Page2viewmodelCreateMessage>(this,OnPage2viewmodelCreateMessage);    ..    public voID OnPage2viewmodelCreateMessage(Page2viewmodelCreateMessage message)    {        var page2viewmodel = new Page2viewmodel(messsage.AvailableNotes,message.soundType);    }

正如您所看到的,我已使用Page2viewmodel替换您的DoStuffviewmodel以使其更清晰.

我希望这能帮到您.

注意:我不保证代码将在记事本中写入.

总结

以上是内存溢出为你收集整理的silverlight – MVVM Light,Windows Phone,View和ViewModel页面之间的导航全部内容,希望文章能够帮你解决silverlight – MVVM Light,Windows Phone,View和ViewModel页面之间的导航所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004752.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存