In the final stage, you create within the module the 
SmartPart that provides the view part of the Model-View-Presenter pattern. You also add a presenter for this view to the module. Then you create the connection between the module and the form in the main application to display the 
SmartPart  in the 
TabWorkspace.
- Create an interface for the view and the presenter to communicate
 - In MyModule project, add a new Interface named IMyView.cs.
 - Add the public keyword to the interface statement.
- declare the two members of this interface as an event named Load and a string property named Message
 public interface IMyView
 {
 event EventHandler Load;
 string Message { get; set; }
 }
 
 
- create a SmartPart User control
 - In MyModule project, add a User Control named MyView.cs
- drag a Label control.
 
- implement the IMyView interface
 - In User Control MyView.cs,
 Add the IMyView interface to the class declaration
 public partial class MyView : UserControl, IMyView
- Right-click IMyView and click Implement Interface, then click Implement Interface in the fly-out menu.
- Replace the two throw statements that Visual Studio generates with two statements that get and set the value of the Message property
 public string Message
 { get
 {            return this.label1.Text;          }
 set
 {            this.label1.Text = value;          }
 }
 
- create the presenter class
 - add a class named MyPresenter.cs
- make the class public
- add a variable of type IMyView
 public class MyPresenter
 {
 IMyView view;
- Create a constructor for the class
 public MyPresenter(IMyView view)
 {
 this.view = view;
 view.Load += new EventHandler(view_Load);
 }
- e. Create an event handler for the Load event.
 void view_Load(object sender, EventArgs e)
 {
 view.Message = "Hello World from a Module";
 }
 
- get a reference to the WorkItem
 - In MyModuleInit.cs add the variable after myCatalogService variable declaration        private WorkItem parentWorkItem
- add a public property to the class.
 [ServiceDependency]
 public WorkItem ParentWorkItem
 {
 set { parentWorkItem = value; }
 }
- Modify the Load method that you added during Stage 2.
 public override void Load()
 {
 base.Load();
 MyWorkItem myWorkItem = parentWorkItem.WorkItems.AddNew <
 MyWorkItem > ();   myWorkItem.Run(parentWorkItem.Workspaces["tabWorkspace1"]);
 }
 
- create and show the view
 - In MyWorkItem.cs,
 using Microsoft.Practices.CompositeUI.SmartParts;
 Create a public Run method that accepts as a parameter a reference to the TabWorkspace.
 public void Run(IWorkspace TabWorkspace()
 {
 }
-  Add statements to the Run method that create a new instance of the MyView  MyView view = this.Items.AddNew < MyView >();
 MyPresenter presenter = new MyPresenter(view);
- Add statements to the Run method that add the new presenter to the current WorkItem, and call the Show method of the TabWorkspace to display the view  this.Items.Add(presenter);
 TabWorkspace.Show(view);
 
 

No comments:
Post a Comment