Browse Source

Detailed MenuPage examples

Maksym Katsydan 5 years ago
parent
commit
f00219379c

+ 30 - 1
samples/ControlCatalog/Pages/MenuPage.xaml

@@ -20,7 +20,9 @@
                         <Separator/>
                         <MenuItem Header="Menu with _Submenu">
                             <MenuItem Header="Submenu _1"/>
-                            <MenuItem Header="Submenu _2"/>
+                            <MenuItem Header="Submenu _2 with Submenu">
+                                <MenuItem Header="Submenu Level 2" />
+                            </MenuItem>
                         </MenuItem>
                         <MenuItem Header="Menu Item with _Icon" InputGesture="Ctrl+Shift+B">
                             <MenuItem.Icon>
@@ -52,6 +54,33 @@
                     </Menu.Styles>
                 </Menu>
             </StackPanel>
+        
+
+            <StackPanel>
+                <TextBlock Classes="h3" Margin="4 8">Mixed</TextBlock>
+                <Menu>
+                    <MenuItem Header="_File">
+                        <MenuItem Header="_New" CommandParameter="{Binding}" InputGesture="Ctrl+N"/>
+                        <Separator/>
+                        <MenuItem Header="_Open..." InputGesture="Ctrl+O"/>
+                        <Separator/>
+                        <MenuItem Header="Execu_te Script..." />
+                        <Separator/>
+                        <MenuItem Header="_Recent" Items="{Binding RecentItems}">
+                            <MenuItem.Styles>
+                                <Style Selector="MenuItem">
+                                    <Setter Property="Header" Value="{Binding Header}"/>
+                                </Style>
+                            </MenuItem.Styles>
+                        </MenuItem>
+                        <Separator/>
+                        <MenuItem Header="E_xit" InputGesture="Alt+F4"/>
+                    </MenuItem>
+                    <MenuItem Header="_Help">
+                        <MenuItem Header="_About"/>
+                    </MenuItem>
+                </Menu>
+            </StackPanel>
         </StackPanel>
     </StackPanel>
 </UserControl>

+ 20 - 16
samples/ControlCatalog/ViewModels/MenuPageViewModel.cs

@@ -17,6 +17,23 @@ namespace ControlCatalog.ViewModels
             SaveCommand = ReactiveCommand.Create(Save, Observable.Return(false));
             OpenRecentCommand = ReactiveCommand.Create<string>(OpenRecent);
 
+            var recentItems = new[]
+            {
+                new MenuItemViewModel
+                {
+                    Header = "File1.txt",
+                    Command = OpenRecentCommand,
+                    CommandParameter = @"c:\foo\File1.txt"
+                },
+                new MenuItemViewModel
+                {
+                    Header = "File2.txt",
+                    Command = OpenRecentCommand,
+                    CommandParameter = @"c:\foo\File2.txt"
+                },
+            };
+
+            RecentItems = recentItems;
             MenuItems = new[]
             {
                 new MenuItemViewModel
@@ -24,27 +41,13 @@ namespace ControlCatalog.ViewModels
                     Header = "_File",
                     Items = new[]
                     {
-                        new MenuItemViewModel { Header = "_Open...", Command = OpenCommand },
+                        new MenuItemViewModel { Header = "O_pen...", Command = OpenCommand },
                         new MenuItemViewModel { Header = "Save", Command = SaveCommand },
                         new MenuItemViewModel { Header = "-" },
                         new MenuItemViewModel
                         {
                             Header = "Recent",
-                            Items = new[]
-                            {
-                                new MenuItemViewModel
-                                {
-                                    Header = "File1.txt",
-                                    Command = OpenRecentCommand,
-                                    CommandParameter = @"c:\foo\File1.txt"
-                                },
-                                new MenuItemViewModel
-                                {
-                                    Header = "File2.txt",
-                                    Command = OpenRecentCommand,
-                                    CommandParameter = @"c:\foo\File2.txt"
-                                },
-                            }
+                            Items = recentItems
                         },
                     }
                 },
@@ -61,6 +64,7 @@ namespace ControlCatalog.ViewModels
         }
 
         public IReadOnlyList<MenuItemViewModel> MenuItems { get; set; }
+        public IReadOnlyList<MenuItemViewModel> RecentItems { get; set; }
         public ReactiveCommand<Unit, Unit> OpenCommand { get; }
         public ReactiveCommand<Unit, Unit> SaveCommand { get; }
         public ReactiveCommand<string, Unit> OpenRecentCommand { get; }