C# ViewModel中的MessageBox
我在我的应用程序mvvm light toolkit中使用。我想使用viewmodels中的MessageBox。所以:我可以在App.xaml.cs中注册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
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(如标题);
};
}
}