silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用MVVM Light Messenger与Silverlight 4 ChildWindow对话框类大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

问候!享受使用MVVM光源的框架 – 使我的生活变得更加容易,并且消除了难以克服的许多障碍…. 题: 我正在尝试设置一个自定义对话框,用于编辑用户发送给对方的消息.我正在尝试使用使用MVVM框架的ChildWindow对象来构造一个silverlight自定义对话框. 想知道是否有任何建议可以如何实现 按照我在这里找到的对话MVVM示例代码:http://mvvmlight.codeplex.co
问候!享受使用MVVM光源的框架 – 使我的生活变得更加容易,并且消除了难以克服的许多障碍….

题:

我正在尝试设置一个自定义对话框,用于编辑用户发送给对方的消息.我正在尝试使用使用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,请注明来意。