如果需要从 ViewModel 与 View 进行通信,我会在 ViewModel 的界面中创建一个事件,并让 View 处理该事件。您的 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
}
}