问候!很高兴使用MVVM Light - 伟大的框架 - 它使我的生活变得更加轻松,消除了一些难以克服的障碍...
问题:
我正在尝试为编辑用户相互发送的消息设置自定义对话框框。我正在尝试使用MVVM框架构建silverlight自定义对话框框,使用ChildWindow对象。
想知道如何完成这个任务是否有任何建议
遵循此处找到的对话框MVVM示例代码:http://mvvmlight.codeplex.com/Thread/View.aspx?ThreadId=209338 我被卡住了,因为Silverlight中的ChildWindow对话框对象是异步的,并且具有不同的Result类。
所以 - 我现在的基本想法是使用该类的视图模型(在这种情况下为Matrix.MessageViewModel)来创建自定义对话框框的实例,将其通过Messenger.Send<>发送,处理在视图中注册的消息以显示对话框,然后让ChildWindow对话框框的Save按钮处理程序触发一个带有修改内容的Messenger.Send,然后使用Save方法在viewmodel上存储修改后的内容...
看起来有点绕,所以想确保没有更简洁的方法....
相关代码片段:
视图模型:
这与ViewModel有关,它使用Messenger.Default.Register<>监听CommandTypes.MessageSave,将结果MessageItem路由到模型进行存储。
问题:
我正在尝试为编辑用户相互发送的消息设置自定义对话框框。我正在尝试使用MVVM框架构建silverlight自定义对话框框,使用ChildWindow对象。
想知道如何完成这个任务是否有任何建议
遵循此处找到的对话框MVVM示例代码:http://mvvmlight.codeplex.com/Thread/View.aspx?ThreadId=209338 我被卡住了,因为Silverlight中的ChildWindow对话框对象是异步的,并且具有不同的Result类。
所以 - 我现在的基本想法是使用该类的视图模型(在这种情况下为Matrix.MessageViewModel)来创建自定义对话框框的实例,将其通过Messenger.Send<>发送,处理在视图中注册的消息以显示对话框,然后让ChildWindow对话框框的Save按钮处理程序触发一个带有修改内容的Messenger.Send,然后使用Save方法在viewmodel上存储修改后的内容...
看起来有点绕,所以想确保没有更简洁的方法....
相关代码片段:
视图模型:
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有关,它使用Messenger.Default.Register<>监听CommandTypes.MessageSave,将结果MessageItem路由到模型进行存储。