Menu
Apparence
Menu
<Window>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_Menu1">
<MenuItem Header="_SousMenu1" Click="SousMenu1MenuItem_Click" />
<Separator />
<!-- Avec une image -->
<MenuItem Header="_SousMenu2">
<MenuItem.Icon>
<Image Source="icon.png" />
</MenuItem.Icon>
</MenuItem>
<!-- Avec une case à cocher -->
<MenuItem Header="_SousMenu2" IsCheckable="True" IsChecked="True" />
</MenuItem>
|
![]() |
Le _ dans le Header sert à définir la touche de raccourci une fois Alt pressé. |
Avec des Routed Commands
MainWindow.xaml |
<Window xmlns:local="clr-namespace:MonNamespace">
<Window.CommandBindings>
<CommandBinding Command="{x:Static local:MainWindow.MaCommande}"
Executed="MaCommandeExecuted"
CanExecute="MaCommandeCanExecute"/>
</Window.CommandBindings>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_Menu1" Command="{x:Static local:MainWindow.MaCommande}">
|
MainWindow.xaml.cs |
namespace MonNamespace
{
public partial class MainWindow : Window
{
// doit être static pour pouvoir être référencée depuis le XAML avec x:Static
public static RoutedCommand MaCommande = new RoutedCommand();
private void MaCommandeExecuted(object sender, ExecutedRoutedEventArgs e)
{
// e.Parameter contient le paramètre de la commande
// e.Source contient le composant graphique branché à la commande
}
private void MaCommandeCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
|
MainWindow.xaml |
<Window KeyUp="Window_KeyUp">
<DockPanel>
<Menu x:Name="menu" DockPanel.Dock="Top" Visibility="Collapsed">
|
MainWindow.xaml.cs |
private void Window_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.System)
{
menu.Visibility = menu.Visibility == Visibility.Collapsed ? Visibility.Visible : Visibility.Collapsed;
}
}
|
Binding de MenuItem
<Menu DockPanel.Dock="Top">
<MenuItem Header="Menu1" ItemsSource="{Binding MenuItemsList}">
<MenuItem.ItemContainerStyle>
<Style>
<Setter Property="Header" Value="{Binding Name}"></Setter>
<Setter Property="Command" Value="{Binding ActivateCommand}"/>
<Setter Property="IsChecked" Value="{Binding IsActive}" />
<Setter Property="IsCheckable" Value="True"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
|