大佬教程收集整理的这篇文章主要介绍了使用MVVM Light Messenger与Silverlight 4 ChildWindow对话框类,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
题:
我正在尝试设置一个自定义对话框,用于编辑用户发送给对方的消息.我正在尝试使用使用MVVM框架的ChildWindow对象来构造一个silverlight自定义对话框.
想知道是否有任何建议可以如何实现
按照我在这里找到的对话MVVM示例代码:http://mvvmlight.codeplex.com/Thread/View.aspx?ThreadId=209338我陷入困境,因为Silverlight中的ChildWindow对话框对象是异步的,并且有一个不同的Result类.
所以 – 我现在的基本思想是使用类的视图模型(在这种情况下是Matrix.messageviewmodel)来创建自定义对话框的实例,通过Messenger.Send<>发送它,处理注册的消息在显示对话框的视图中,然后让ChildWindow对话框的Save按钮处理程序使用修改后的内容触发@L_431_0@messenger.Send,然后使用viewmodel上的Save方法存储…
相关代码位:
查看型号:
messageDialogBox = new messageEditorDialog( SELEctedmessage,this.SELEctedSitEID,this.LoggedOnEmployee.id,this.Projects); Dialogmessage editmessage = new Dialogmessage( this,messageDialogBox,"Edit message",DialogmessageCallBACk); Messenger.Default.Send(editmessagE);
视图:
public ViewHost() { InitializeComponent(); Loaded += new RoutedEventHandler(ViewHost_Loaded); if (!viewmodelBase.IsInDesignModeStatiC) { // Use MEF To load the View Model CompositionInitializer.SatisfyImports(this); } Applicationmessages.IsBusymessage.Register(this,OnIsBusyChangE); Messenger.Default.Register<Dialogmessage>(this,msg => ShowDialog(msg)); } private void ShowDialog(Dialogmessage msg) { messageEditorDialog myDialog = (messageEditorDialog) msg.Target; myDialog.Show(); }
对话框保存:
private void ButtonSave_Click(object sender,RoutedEventArgs E) { Messenger.Default.Send<message>( this.messageItem,Commandmessages.messageTypes.messageSavE); }
这可以重新映入viewmodel,它具有@L_431_0@messenger.Default.Register<>观看CommandTypes.messageSave,将生成的messageItem路由到模型进行存储…..
>我将有一个视图模型为我的对话视图,并将消息逻辑移动到它,而不是视图的代码背后.
>我将在我的视图模型中使用保存命令,并将ButtonSave绑定到该命令.这将保存逻辑移动到视图模型,而不是视图的后面的代码.
>当点击保存按钮时,您正在使用其他消息.此外,您没有使用Dialogmessage的回调.假设您更改为使用保存命令,则可以将消息保存在视图模型中的私有成员中,然后在用户保存时使用消息的回调.
>您可能需要考虑重新使用对话框视图,或确保视图正确清理,以免最终导致内存泄漏.
以下是对您的观点模型的更改,遵循建议2& 3.
public class messageEditorDialogviewmodel : viewmodelBase { private Dialogmessage _dialogmessage; public RelayCommand SaveCommand { get; private set; } public Dialogmessage message { get; set; } public messageEditorDialogviewmodel() { SaveCommand = new RelayCommand(SaveCommandExecutE); } private SaveCommandExecute() { message.Execute(); } }
以上是大佬教程为你收集整理的使用MVVM Light Messenger与Silverlight 4 ChildWindow对话框类全部内容,希望文章能够帮你解决使用MVVM Light Messenger与Silverlight 4 ChildWindow对话框类所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。