Skip to content

Commit 0318d18

Browse files
authored
Merge pull request #1294 from Microsoft/menuitemheader
Menu: changed MenuItem Header to type object
2 parents 74aa3b0 + 8ec2097 commit 0318d18

File tree

4 files changed

+34
-145
lines changed

4 files changed

+34
-145
lines changed

Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Menu/Menu.bind

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,13 @@
2727
Orientation="@[Orientation:Enum:Orientation.Horizontal]"
2828
TooltipPlacement="@[TooltipPlacement:Enum:PlacementMode.Bottom]">
2929

30-
<controls:MenuItem controls:Menu.InputGestureText="Alt+F"
31-
Header="File">
30+
<controls:MenuItem controls:Menu.InputGestureText="Alt+F">
31+
<controls:MenuItem.Header>
32+
<StackPanel Orientation="Horizontal">
33+
<SymbolIcon Symbol="Document" />
34+
<TextBlock Text="File" Margin="5,0,0,0" />
35+
</StackPanel>
36+
</controls:MenuItem.Header>
3237
<MenuFlyoutSubItem Text="New">
3338
<MenuFlyoutItem controls:Menu.InputGestureText="Ctrl+Shift+N"
3439
Command="{StaticResource NewProject}"

Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Menu/MenuPage.xaml

Lines changed: 8 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,14 @@
2626
TooltipPlacement="{Binding TooltipPlacement.Value, Mode=TwoWay}">
2727

2828
<controls:MenuItem Name="FileMenu"
29-
controls:Menu.InputGestureText="Alt+F"
30-
Header="File">
29+
controls:Menu.InputGestureText="Alt+F">
30+
<controls:MenuItem.Header>
31+
<StackPanel Orientation="Horizontal">
32+
<SymbolIcon Symbol="Document" />
33+
<TextBlock Text="File" Margin="5,0,0,0" />
34+
</StackPanel>
35+
</controls:MenuItem.Header>
36+
3137
<MenuFlyoutSubItem Text="New">
3238
<MenuFlyoutItem controls:Menu.InputGestureText="Ctrl+Shift+N"
3339
Command="{StaticResource NewProject}"
@@ -121,142 +127,6 @@
121127
<MenuFlyoutItem Text="Grid" />
122128
</MenuFlyoutSubItem>
123129
</controls:MenuItem>
124-
125-
<controls:MenuItem Header="Debug">
126-
<MenuFlyoutSubItem Text="Windows">
127-
<MenuFlyoutItem Text="Windows 8" />
128-
<MenuFlyoutItem Text="Windows 10" />
129-
</MenuFlyoutSubItem>
130-
131-
<MenuFlyoutSubItem Text="Graphics">
132-
<MenuFlyoutItem Text="Canvas" />
133-
<MenuFlyoutItem Text="Grid" />
134-
</MenuFlyoutSubItem>
135-
</controls:MenuItem>
136-
137-
<controls:MenuItem Header="Debug">
138-
<MenuFlyoutSubItem Text="Windows">
139-
<MenuFlyoutItem Text="Windows 8" />
140-
<MenuFlyoutItem Text="Windows 10" />
141-
</MenuFlyoutSubItem>
142-
143-
<MenuFlyoutSubItem Text="Graphics">
144-
<MenuFlyoutItem Text="Canvas" />
145-
<MenuFlyoutItem Text="Grid" />
146-
</MenuFlyoutSubItem>
147-
</controls:MenuItem>
148-
149-
<controls:MenuItem Header="Debug">
150-
<MenuFlyoutSubItem Text="Windows">
151-
<MenuFlyoutItem Text="Windows 8" />
152-
<MenuFlyoutItem Text="Windows 10" />
153-
</MenuFlyoutSubItem>
154-
155-
<MenuFlyoutSubItem Text="Graphics">
156-
<MenuFlyoutItem Text="Canvas" />
157-
<MenuFlyoutItem Text="Grid" />
158-
</MenuFlyoutSubItem>
159-
</controls:MenuItem>
160-
161-
<controls:MenuItem Header="Debug">
162-
<MenuFlyoutSubItem Text="Windows">
163-
<MenuFlyoutItem Text="Windows 8" />
164-
<MenuFlyoutItem Text="Windows 10" />
165-
</MenuFlyoutSubItem>
166-
167-
<MenuFlyoutSubItem Text="Graphics">
168-
<MenuFlyoutItem Text="Canvas" />
169-
<MenuFlyoutItem Text="Grid" />
170-
</MenuFlyoutSubItem>
171-
</controls:MenuItem>
172-
173-
<controls:MenuItem Header="Debug">
174-
<MenuFlyoutSubItem Text="Windows">
175-
<MenuFlyoutItem Text="Windows 8" />
176-
<MenuFlyoutItem Text="Windows 10" />
177-
</MenuFlyoutSubItem>
178-
179-
<MenuFlyoutSubItem Text="Graphics">
180-
<MenuFlyoutItem Text="Canvas" />
181-
<MenuFlyoutItem Text="Grid" />
182-
</MenuFlyoutSubItem>
183-
</controls:MenuItem>
184-
185-
<controls:MenuItem Header="Debug">
186-
<MenuFlyoutSubItem Text="Windows">
187-
<MenuFlyoutItem Text="Windows 8" />
188-
<MenuFlyoutItem Text="Windows 10" />
189-
</MenuFlyoutSubItem>
190-
191-
<MenuFlyoutSubItem Text="Graphics">
192-
<MenuFlyoutItem Text="Canvas" />
193-
<MenuFlyoutItem Text="Grid" />
194-
</MenuFlyoutSubItem>
195-
</controls:MenuItem>
196-
197-
<controls:MenuItem Header="Debug">
198-
<MenuFlyoutSubItem Text="Windows">
199-
<MenuFlyoutItem Text="Windows 8" />
200-
<MenuFlyoutItem Text="Windows 10" />
201-
</MenuFlyoutSubItem>
202-
203-
<MenuFlyoutSubItem Text="Graphics">
204-
<MenuFlyoutItem Text="Canvas" />
205-
<MenuFlyoutItem Text="Grid" />
206-
</MenuFlyoutSubItem>
207-
</controls:MenuItem>
208-
209-
<controls:MenuItem Header="Debug">
210-
<MenuFlyoutSubItem Text="Windows">
211-
<MenuFlyoutItem Text="Windows 8" />
212-
<MenuFlyoutItem Text="Windows 10" />
213-
</MenuFlyoutSubItem>
214-
215-
<MenuFlyoutSubItem Text="Graphics">
216-
<MenuFlyoutItem Text="Canvas" />
217-
<MenuFlyoutItem Text="Grid" />
218-
</MenuFlyoutSubItem>
219-
</controls:MenuItem>
220-
<controls:MenuItem Header="Debug">
221-
<MenuFlyoutSubItem Text="Windows">
222-
<MenuFlyoutItem Text="Windows 8" />
223-
<MenuFlyoutItem Text="Windows 10" />
224-
</MenuFlyoutSubItem>
225-
226-
<MenuFlyoutSubItem Text="Graphics">
227-
<MenuFlyoutItem Text="Canvas" />
228-
<MenuFlyoutItem Text="Grid" />
229-
</MenuFlyoutSubItem>
230-
</controls:MenuItem>
231-
232-
<controls:MenuItem Header="Debug">
233-
<MenuFlyoutSubItem Text="Windows">
234-
<MenuFlyoutItem Text="Windows 8" />
235-
<MenuFlyoutItem Text="Windows 10" />
236-
</MenuFlyoutSubItem>
237-
238-
<MenuFlyoutSubItem Text="Graphics">
239-
<MenuFlyoutItem Text="Canvas" />
240-
<MenuFlyoutItem Text="Grid" />
241-
</MenuFlyoutSubItem>
242-
</controls:MenuItem>
243-
244-
<controls:MenuItem Header="Debug">
245-
<MenuFlyoutSubItem Text="Windows">
246-
<MenuFlyoutItem Text="Windows 8" />
247-
<MenuFlyoutItem Text="Windows 10" />
248-
</MenuFlyoutSubItem>
249-
250-
<MenuFlyoutSubItem Text="Graphics">
251-
<MenuFlyoutItem Text="Canvas" />
252-
<MenuFlyoutItem Text="Grid" />
253-
</MenuFlyoutSubItem>
254-
</controls:MenuItem>
255-
256-
<controls:MenuItem Header="Debug">
257-
258-
</controls:MenuItem>
259-
260130
</controls:Menu>
261131

262132
<StackPanel Grid.Row="1">

Microsoft.Toolkit.Uwp.UI.Controls/Menu/Menu.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
Background="{TemplateBinding Background}"
3838
BorderBrush="{TemplateBinding BorderBrush}"
3939
Content="{TemplateBinding Header}"
40+
ContentTemplate="{TemplateBinding HeaderTemplate}"
4041
Foreground="{TemplateBinding Foreground}"
4142
IsTabStop="False">
4243
<VisualStateManager.VisualStateGroups>

Microsoft.Toolkit.Uwp.UI.Controls/Menu/MenuItem.cs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,38 @@ public class MenuItem : ItemsControl
3232
private Menu _parentMenu;
3333
private bool _isOpened;
3434
private MenuFlyout _menuFlyout;
35+
private Rect _bounds;
3536

3637
internal Button FlyoutButton { get; private set; }
3738

3839
/// <summary>
3940
/// Identifies the <see cref="Header"/> dependency property.
4041
/// </summary>
41-
public static readonly DependencyProperty HeaderProperty = DependencyProperty.Register(nameof(Header), typeof(string), typeof(MenuItem), new PropertyMetadata(default(string)));
42-
43-
private Rect _bounds;
42+
public static readonly DependencyProperty HeaderProperty = DependencyProperty.Register(nameof(Header), typeof(object), typeof(MenuItem), new PropertyMetadata(null));
4443

4544
/// <summary>
4645
/// Gets or sets the title to appear in the title bar
4746
/// </summary>
48-
public string Header
47+
public object Header
4948
{
50-
get { return (string)GetValue(HeaderProperty); }
49+
get { return (object)GetValue(HeaderProperty); }
5150
set { SetValue(HeaderProperty, value); }
5251
}
5352

53+
/// <summary>
54+
/// Identifies the <see cref="HeaderTemplate"/> dependency property.
55+
/// </summary>
56+
public static readonly DependencyProperty HeaderTemplateProperty = DependencyProperty.Register(nameof(HeaderTemplate), typeof(DataTemplate), typeof(MenuItem), new PropertyMetadata(null));
57+
58+
/// <summary>
59+
/// Gets or sets the data template that is used to display the content of the MenuItem
60+
/// </summary>
61+
public DataTemplate HeaderTemplate
62+
{
63+
get { return (DataTemplate)GetValue(HeaderTemplateProperty); }
64+
set { SetValue(HeaderTemplateProperty, value); }
65+
}
66+
5467
/// <summary>
5568
/// Gets a value indicating whether the menu is opened or not
5669
/// </summary>

0 commit comments

Comments
 (0)