main
1using System.Windows;
2using System.Windows.Controls;
3using presentation.windows.eventing;
4
5namespace presentation.windows
6{
7 public class WpfApplicationController : ApplicationController
8 {
9 RegionManager region_manager;
10 PresenterFactory factory;
11 EventAggregator event_aggregator;
12
13 public WpfApplicationController(RegionManager region_manager, PresenterFactory factory, EventAggregator event_aggregator)
14 {
15 this.region_manager = region_manager;
16 this.event_aggregator = event_aggregator;
17 this.factory = factory;
18 }
19
20 public void add_tab<Presenter, View>() where Presenter : TabPresenter where View : FrameworkElement, Tab<Presenter>, new()
21 {
22 var presenter = factory.create<Presenter>();
23 event_aggregator.subscribe(presenter);
24 presenter.present();
25 region_manager.region<TabControl>(x => x.Items.Add(new TabItem
26 {
27 Header = presenter.Header,
28 Content = new View {DataContext = presenter}
29 }));
30 }
31
32 public void launch_dialog<Presenter, Dialog>() where Presenter : DialogPresenter where Dialog : FrameworkElement, Dialog<Presenter>, new()
33 {
34 var presenter = factory.create<Presenter>();
35 var dialog = new Dialog {DataContext = presenter};
36 presenter.close = () =>
37 {
38 dialog.Close();
39 };
40 presenter.present();
41 dialog.open();
42 }
43
44 public void load_region<Presenter, Region>() where Presenter : windows.Presenter where Region : FrameworkElement, View<Presenter>, new()
45 {
46 var presenter = factory.create<Presenter>();
47 event_aggregator.subscribe(presenter);
48 presenter.present();
49 region_manager.region<Region>(x =>
50 {
51 x.DataContext = presenter;
52 });
53 }
54 }
55}