Если добавлять в окно элемент меню таким же способом, как и для Windows Forms, просто открыв Toolbox и сделав на элементе Menu двойной щелчок мыши, то получится примерно так:
Как видите, высота по-умолчанию слишком большая, а ширина ограничена не шириной окна, а параметром Width="100". При изменении размеров окна, меню меняться не будет.
Правильный способ конечно есть, хоть он и не такой «очевидный».
1. В окне редактора XAML нажимаем на Grid:
2. В окне свойств для этого элемента прокручиваем содержимое окна до свойства ▶ и нажимаем на многоточие:
3. Добавляем Элемент RowDefinition и меняем свойство его высоты на 25:
4. Аналогичным способом добавляем второй ряд (но для него ничего не меняем) и нажимаем ОК, чтобы закрыть окно.
5. Добавляем элемент DockPanel или вписываем в XAML-редакторе строки:
<DockPanel>
</DockPanel>
6. Для DockPanel находим его свойство LastChildFill и снимаем с него галочку:
7. Вот теперь самое время перетащить на свое место элемент Menu из инструментария Toolbox.
8. Далее нужно установить его ширину в Auto (или удалить параметр Width в редакторе XAML).
9. После чего установить свойство DockPanel.Dock=»Top»
10. Теперь в редакторе XAML выделяем Menu и в панели свойств находим пункт Items
11. Нажав на него, мы открываем диалог добавления новых элементов меню. В диалоговом окне Collection Editor: Items влевом нижнем углу выбираем в списке MenuItem и нажимаем кнопку Add.
12. Для нового элемента в правой панели окна отрываются свойства, где необходимо добавить название нового пункта меню (через свойство Header). Причем для того, чтобы выделить горячую клавишу раньше нужно было поставить перед буквой знак &. Сейчас же нужно поставить символ подчеркивания ‘_’.
13. Аналогичным образом можно добавить остальные пункты меню.
14. Если меню содержит подпункт, то они добавляются аналогичным образом, выбирая в свойствах элемента пункт Items (Collection)….
15. Итог:
Другой способ (использование 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>
- Android: Захват траффика - 07.09.2024
- WPF: Отобразить дату и время в формате региональных настроек - 30.08.2024
- Яндекс-диск: Сортировка фото по дате - 23.07.2024