Я использую каркас Caliburn Micro.Это на самом деле не имеет значения.Дело в том, что я публикую событие в модели представления, которая содержит новую модель представления, которая будет отображаться в ее аргументах события.Событие перехватывается в ShellViewModel (вы можете видеть его как модель корневого представления), которая фактически активирует новую модель представления.
Итак, как я могу передать модель представления в мои аргументы событий?В настоящее время это выглядит так:
// where it gets published; "AnotherViewModel" is the actual class
public void AMethod()
{
var args = new ViewModelChangedEventArgs { ViewModelType = typeof(AnotherViewModel) };
PublishEvent(args);
}
// event handler
public void Handle(ViewModelChangedEventArgs message)
{
if (message.ViewModelType == typeof(AnotherViewModel))
{
// activate AnotherViewModel
}
if (message.ViewModelType == typeof(FooViewModel))
{
// activate FooViewModel
}
}
Этот метод кажется мне не очень элегантным.У вас есть идеи получше?