Introduction
In Caliburn.Micro, we have a series of
supporting services for building presentation tiers. Among them is
the EventAggregator
, a service which supports in-process
publish/subscribe. Here I explain how to pass (Publish
) event
from Control to Main Page (ShellView
) and How to subscribe event in
ShellviewModel
.
Let’s start by having a look at the ItemClickEvent
class:
First add
ItemClickEvent
class and write there:
public string ToDoItemDescription { get; set; }
public ItemClickEvent(string toDoItemDescription)
{
ToDoItemDescription = toDoItemDescription;
}
After creating ItemClassEvent
class, add new Item PageOneView
which contains a Simple Button and add PageOneViewModel
which contains Button click like:
public class PageOneViewModel : Conductor<screen>.Collection.OneActive
{
public void ClickMe()
{
IoC.Get<ieventaggregator>().Publish(new ItemClickEvent("Button Click"));
}
}
Finally ShellViewModel
looks like:
namespace EventPassingToShellView
{
[Export(typeof(IShell))]
public class ShellViewModel : Conductor<screen>
.Collection.OneActive, IShell, IHandle<itemclickevent>
{
public ShellViewModel()
{
ShowPageOne();
IoC.Get<ieventaggregator>().Subscribe(this);
}
public void ShowPageOne()
{
ActivateItem(new PageOneViewModel());
}
#region IHandle<itemclickevent> Members
public void Handle(ItemClickEvent message)
{
MessageBox.Show(message.ToDoItemDescription);
}
#endregion
}
}
Finally Project Structure looks like: