@@ -9,37 +9,64 @@ public partial class App : Application
9
9
public App ( )
10
10
{
11
11
this . InitializeComponent ( ) ;
12
- this . MainPage = CreateMainPage ( ) ;
12
+ ShowChooser ( ) ;
13
13
}
14
14
15
15
internal static MasterDetailPage MasterDetail { get ; private set ; }
16
16
17
17
internal static INavigation Navigation { get ; private set ; }
18
18
19
- private static Page CreateMainPage ( )
19
+ public static void ShowChooser ( )
20
+ {
21
+ Current . MainPage = new ChooserView ( ) ;
22
+ }
23
+
24
+ public static void ShowMasterDetailPatternOne ( )
20
25
{
21
26
var master = CreateMasterDetailPage ( new MenuView ( ) , new MainView ( ) ) ;
22
- var navigation = CreateNavigationPage ( master ) ;
27
+ Current . MainPage = CreateNavigationPage ( master ) ;
28
+ }
23
29
24
- return navigation ;
30
+ public static void ShowMasterDetailPatternTwo ( )
31
+ {
32
+ var master = CreateMasterDetailPage ( new MenuView ( ) , CreateNavigationPage ( new MainView ( ) ) ) ;
33
+ Current . MainPage = master ;
25
34
}
26
35
27
36
private static MasterDetailPage CreateMasterDetailPage ( Page master , Page detail )
28
37
{
29
- return MasterDetail = new MasterDetailPage { Detail = detail , Master = master , MasterBehavior = MasterBehavior . Popover , Title = "AppCompat Demo" } ;
38
+ return MasterDetail = new MasterDetailPage { Detail = detail , Master = master , MasterBehavior = GetMasterBehavior ( ) , Title = "AppCompat Demo" } ;
30
39
}
31
40
32
41
private static NavigationPage CreateNavigationPage ( Page page )
33
42
{
34
43
var navigation = new NavigationPage ( page ) ;
35
44
36
- navigation . Popped += ( sender , args ) => MasterDetail . IsPresented = false ;
37
- navigation . PoppedToRoot += ( sender , args ) => MasterDetail . IsPresented = false ;
38
- navigation . Pushed += ( sender , args ) => MasterDetail . IsPresented = false ;
45
+ navigation . Popped += ( sender , args ) => HideMenu ( ) ;
46
+ navigation . PoppedToRoot += ( sender , args ) => HideMenu ( ) ;
47
+ navigation . Pushed += ( sender , args ) => HideMenu ( ) ;
39
48
40
49
Navigation = navigation . Navigation ;
41
50
42
51
return navigation ;
43
52
}
53
+
54
+ private static MasterBehavior GetMasterBehavior ( )
55
+ {
56
+ if ( Device . Idiom == TargetIdiom . Phone )
57
+ {
58
+ return MasterBehavior . Popover ;
59
+ }
60
+
61
+ return MasterBehavior . SplitOnLandscape ;
62
+ }
63
+
64
+ private static void HideMenu ( )
65
+ {
66
+ if ( MasterDetail . MasterBehavior == MasterBehavior . Popover )
67
+ {
68
+ MasterDetail . IsPresented = false ;
69
+ }
70
+ }
44
71
}
45
72
}
0 commit comments