C# ViewModel中的MessageBox

C# ViewModel中的MessageBox,c#,windows-phone-7,mvvm-light,C#,Windows Phone 7,Mvvm Light,我在我的应用程序mvvm light toolkit中使用。我想使用viewmodels中的MessageBox。所以:我可以在App.xaml.cs中注册Messenger.Default.register()吗?必须为所有viewmodels注册它。我不想在每个ViewModel中注册它。 我可以在停用或关闭事件中调用Messenger.Default.Unregister() 谢谢MVVM和MessageBox的一种可能方法是一种简单的事件机制: public class MessageB

我在我的应用程序mvvm light toolkit中使用。我想使用viewmodels中的MessageBox。所以:我可以在App.xaml.cs中注册
Messenger.Default.register(
)吗?必须为所有viewmodels注册它。我不想在每个ViewModel中注册它。 我可以在停用或关闭事件中调用
Messenger.Default.Unregister()


谢谢

MVVM和MessageBox的一种可能方法是一种简单的事件机制:

public class MessageBoxDisplayEventArgs : EventArgs
{
    public string Title { get; set; }

    // Other properties here...
}
...
public class ViewModelBase
{
    public event EventHandler<MessageBoxDisplayEventArgs> MessageBoxDisplayRequested;

    protected void OnMessageBoxDisplayRequest(string title)
    {
        if (this.MessageBoxDisplayRequested != null)
        {
            this.MessageBoxDisplayRequested(
                this, 
                new MessageBoxDisplayEventArgs
                {
                    Title = title
                });
        }
    }
}
...
public class YourViewModel : ViewModelBase
{
    private void SomeMethod()
    {
        this.OnMessageBoxDisplayRequest("hello world");
    }
}
...
public class YourView
{
    public YourView()
    {
        var vm = new YourViewModel();
        this.Datacontext = vm;

        vm.MessageBoxDisplayRequested += (sender, e) =>
        {
            // UI logic here
            //MessageBox.Show(e.Title);
        };
    }
}
公共类MessageBoxDisplayEventArgs:EventArgs { 公共字符串标题{get;set;} //这里的其他属性。。。 } ... 公共类ViewModelBase { 公共事件EventHandler MessageBoxDisplayRequested; MessageBoxDisplayRequest上受保护的void(字符串标题) { if(this.MessageBoxDisplayRequested!=null) { 已请求此.MessageBoxDisplay( 这 新MessageBoxDisplayEventArgs { 头衔 }); } } } ... 公共类YourViewModel:ViewModelBase { 私有方法() { 这个.OnMessageBoxDisplayRequest(“hello world”); } } ... 公共课你的观点 { 公共视图() { var vm=新的YourViewModel(); this.Datacontext=vm; vm.MessageBoxDisplayRequested+=(发件人,e)=> { //这里的UI逻辑 //MessageBox.Show(如标题); }; } }