在需要从ViewModel到视图进行通信的情况下,我会在ViewModel的界面中创建一个事件,并让视图处理该事件。ViewModel可以订阅AddToolbarPanelMessage,然后引发视图处理的事件。
public interface ICustomerViewModel
{
event EventHandler AddToolbarPanel;
}
public class CustomerViewModel : ViewModelBase, ICustomerViewModel
{
public event EventHandler AddToolbarPanel;
public CustomerViewModel(IMessenger broker) : base(broker)
{
broker.Subscribe<AddToolbarPanelMessage>(
MessengerInstance.Register<AddToolbarMessage>(this, AddToolbarMessageReceived);
}
private void AddToolbarMessageReceived(AddToolbarMessage msg)
{
var eh = AddToolbarPanel;
if (eh != null)
eh.Invoke(this, EventArgs.Empty);
}
}
您可以在视图的ctor中轻松处理事件。。。
public partial class CustomerView : UserControl
{
public CustomerView()
{
InitializeComponent();
((ICustomerViewModel)this.DataContext).AddToolbarPanel += CreateToolbarPanel;
}
private void CreateToolbarPanel(object sender, EventArgs e)
{
// do your stuff
}
}