WPF: Добавление меню

Если добавлять в окно элемент меню таким же способом, как и для Windows Forms, просто открыв Toolbox и сделав на элементе Menu двойной щелчок мыши, то получится примерно так:
WPF: Добавление меню
Как видите, высота по-умолчанию слишком большая, а ширина ограничена не шириной окна, а параметром Width="100". При изменении размеров окна, меню меняться не будет.
Правильный способ конечно есть, хоть он и не такой «очевидный».
1. В окне редактора XAML нажимаем на Grid:
WPF: Добавление меню
2. В окне свойств для этого элемента прокручиваем содержимое окна до свойства LayoutRowDefinitions и нажимаем на многоточие:
WPF: Добавление меню
3. Добавляем Элемент RowDefinition и меняем свойство его высоты на 25:
WPF: Добавление меню
4. Аналогичным способом добавляем второй ряд (но для него ничего не меняем) и нажимаем ОК, чтобы закрыть окно.
5. Добавляем элемент DockPanel или вписываем в XAML-редакторе строки:

<DockPanel>

</DockPanel>

6. Для DockPanel находим его свойство LastChildFill и снимаем с него галочку:
WPF: Добавление меню
7. Вот теперь самое время перетащить на свое место элемент Menu из инструментария Toolbox.
8. Далее нужно установить его ширину в Auto (или удалить параметр Width в редакторе XAML).
9. После чего установить свойство DockPanel.Dock=»Top»
10. Теперь в редакторе XAML выделяем Menu и в панели свойств находим пункт Items
WPF: Добавление меню
11. Нажав на него, мы открываем диалог добавления новых элементов меню. В диалоговом окне Collection Editor: Items влевом нижнем углу выбираем в списке MenuItem и нажимаем кнопку Add.
12. Для нового элемента в правой панели окна отрываются свойства, где необходимо добавить название нового пункта меню (через свойство Header). Причем для того, чтобы выделить горячую клавишу раньше нужно было поставить перед буквой знак &. Сейчас же нужно поставить символ подчеркивания ‘_’.
WPF: Добавление меню
13. Аналогичным образом можно добавить остальные пункты меню.
14. Если меню содержит подпункт, то они добавляются аналогичным образом, выбирая в свойствах элемента пункт Items (Collection)….
15. Итог:
WPF: Добавление меню

Другой способ (использование Grid.ColumnDefinitions и Grid.RowDefinitions)

Еще одним способом растянуть элемент Меню на ширину окна является добавление в окно элемента Grid.
Правда для этого нужно заранее просчитать на сколько областей делить окно. Например, если окно состоит из Меню, Строки Статуса и рабочей области, то XAML код будет следующим:

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="25" />
            <RowDefinition Height="*" />
            <RowDefinition Height="25" />
        </Grid.RowDefinitions>
        <Menu x:Name="menuMain" Grid.Row="0" Grid.ColumnSpan="3" >
            <MenuItem x:Name="menuBarFile" Header="_File"/>
            <MenuItem Header="_Help"/>
        </Menu>
        <StatusBar Height="25" Grid.Row="2" Grid.ColumnSpan="3" />
    </Grid>
</Window>