Click here to Skip to main content
Click here to Skip to main content

[Caliburn.Micro] Passing Control Event to ShellView

By , 6 Sep 2012
Rate this:
Please Sign up or sign in to vote.

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"));
		// Here you can pass your custom value and variable in ItemClassEvent().
       }
} 

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)
        {
		// Got message from  PageOneViewModel what ever you pass it.
           MessageBox.Show(message.ToDoItemDescription);
        }

        #endregion
    }
}   

Finally Project Structure looks like:

Project Structure

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Savalia Manoj M
Software Developer (Senior)
India India
No Biography provided

Comments and Discussions

 
QuestionGoing the other way PinmemberDBLWizard28-Nov-12 12:00 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140415.2 | Last Updated 7 Sep 2012
Article Copyright 2012 by Savalia Manoj M
Everything else Copyright © CodeProject, 1999-2014
Terms of Use
Layout: fixed | fluid