« ContextMenu » : différence entre les versions
De Banane Atomic
Aller à la navigationAller à la recherche
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
[[Category:WPF]] | |||
= ContextMenu = | |||
<kode lang="xaml"> | |||
< | |||
<UserControl.ContextMenu> | <UserControl.ContextMenu> | ||
<ContextMenu> | <ContextMenu> | ||
Ligne 17 : | Ligne 15 : | ||
</MenuItem> | </MenuItem> | ||
</MenuItem> | </MenuItem> | ||
</ | </kode> | ||
=Contrôler l'ouverture du menu= | = Contrôler l'ouverture du menu = | ||
<kode lang="xaml"> | |||
< | |||
<UserControl ContextMenuOpening="UserControl_ContextMenuOpening"> | <UserControl ContextMenuOpening="UserControl_ContextMenuOpening"> | ||
</ | </kode> | ||
<kode lang="csharp"> | |||
< | |||
private void UserControl_ContextMenuOpening(object sender, ContextMenuEventArgs e) | private void UserControl_ContextMenuOpening(object sender, ContextMenuEventArgs e) | ||
{ | { | ||
Ligne 38 : | Ligne 28 : | ||
e.Handled = true; | e.Handled = true; | ||
} | } | ||
</ | </kode> | ||
=Ouvrir le menu depuis le code= | = Ouvrir le menu depuis le code = | ||
<kode lang="csharp"> | |||
< | |||
ContextMenu.PlacementTarget = this; | ContextMenu.PlacementTarget = this; | ||
ContextMenu.IsOpen = true; | ContextMenu.IsOpen = true; | ||
</ | </kode> | ||
=Style= | = Style = | ||
<kode lang="xaml"> | |||
< | |||
<!-- Modifie les items texte blanc sur fond noir --> | <!-- Modifie les items texte blanc sur fond noir --> | ||
<Style TargetType="{x:Type MenuItem}"> | <Style TargetType="{x:Type MenuItem}"> | ||
Ligne 72 : | Ligne 54 : | ||
Value="-1" /> | Value="-1" /> | ||
</Style> | </Style> | ||
</ | </kode> | ||
Le rectangle bleu transparent sur le Highlighted item ne peut être stylé qu'en redéfinissant le Template de MenuItem. | Le rectangle bleu transparent sur le Highlighted item ne peut être stylé qu'en redéfinissant le Template de MenuItem. | ||
<kode lang="xaml"> | |||
< | |||
<!-- Code du ControlTemplate de base de MenuItem modifié pour afficher un rectangle orange sur l'élément Highlighted --> | <!-- Code du ControlTemplate de base de MenuItem modifié pour afficher un rectangle orange sur l'élément Highlighted --> | ||
<Style TargetType="{x:Type MenuItem}"> | <Style TargetType="{x:Type MenuItem}"> | ||
Ligne 246 : | Ligne 224 : | ||
</Setter> | </Setter> | ||
</Style> | </Style> | ||
</ | </kode> | ||
Dernière version du 12 avril 2020 à 12:46
ContextMenu
<UserControl.ContextMenu> <ContextMenu> <MenuItem Header="Choix 1" InputGestureText="Ctrl+1" Click="MenuItem_Click"> </MenuItem> <MenuItem Header="Choix 2"> <MenuItem Header="Sous-Choix 2-1" InputGestureText="Ctrl+2" Click="MenuItem_Click"> </MenuItem> </MenuItem> |
<UserControl ContextMenuOpening="UserControl_ContextMenuOpening"> |
private void UserControl_ContextMenuOpening(object sender, ContextMenuEventArgs e) { // désactive l'affichage du Menu sur clique-droit e.Handled = true; } |
ContextMenu.PlacementTarget = this; ContextMenu.IsOpen = true; |
Style
<!-- Modifie les items texte blanc sur fond noir --> <Style TargetType="{x:Type MenuItem}"> <Setter Property="Background" Value="{StaticResource ResourceKey=mainBackgroundBrush}"/> <Setter Property="Foreground" Value="White"/> </Style> <Style TargetType="{x:Type ContextMenu}"> <!-- Changement de la couleur de fond du Menu --> <Setter Property="Background" Value="Black" /> <!-- Décalage pour ne pas afficher un petit bout blanc --> <Setter Property="Padding" Value="-1" /> </Style> |
Le rectangle bleu transparent sur le Highlighted item ne peut être stylé qu'en redéfinissant le Template de MenuItem.
<!-- Code du ControlTemplate de base de MenuItem modifié pour afficher un rectangle orange sur l'élément Highlighted --> <Style TargetType="{x:Type MenuItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="MenuItem" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib"> <Grid SnapsToDevicePixels="True"> <Rectangle RadiusX="2" RadiusY="2" Fill="{TemplateBinding Panel.Background}" Stroke="{TemplateBinding Border.BorderBrush}" StrokeThickness="1" Name="Bg" /> <Rectangle RadiusX="2" RadiusY="2" Name="InnerBorder" Margin="1,1,1,1" /> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" MinWidth="24" SharedSizeGroup="MenuItemIconColumnGroup" /> <ColumnDefinition Width="4" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="37" /> <ColumnDefinition Width="Auto" SharedSizeGroup="MenuItemIGTColumnGroup" /> <ColumnDefinition Width="17" /> </Grid.ColumnDefinitions> <ContentPresenter Content="{TemplateBinding MenuItem.Icon}" ContentSource="Icon" Name="Icon" Margin="1,1,1,1" VerticalAlignment="Center" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" /> <Border BorderThickness="1,1,1,1" CornerRadius="3,3,3,3" BorderBrush="#FFCDD3E6" Background="#FFE6EFF4" Name="GlyphPanel" Width="22" Height="22" Margin="1,1,1,1" Visibility="Hidden"> <Path Data="M0,5.1L1.7,5.2 3.4,7.1 8,0.4 9.2,0 3.3,10.8z" Fill="#FF0C12A1" Name="Glyph" Width="9" Height="11" FlowDirection="LeftToRight" /> </Border> <ContentPresenter RecognizesAccessKey="True" Content="{TemplateBinding HeaderedContentControl.Header}" ContentTemplate="{TemplateBinding HeaderedContentControl.HeaderTemplate}" ContentStringFormat="{TemplateBinding HeaderedItemsControl.HeaderStringFormat}" ContentSource="Header" Margin="{TemplateBinding Control.Padding}" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" Grid.Column="2" /> <TextBlock Text="{TemplateBinding MenuItem.InputGestureText}" Margin="{TemplateBinding Control.Padding}" Grid.Column="4" /> </Grid> </Grid> <ControlTemplate.Triggers> <Trigger Property="MenuItem.Icon"> <Setter Property="UIElement.Visibility" TargetName="Icon"> <Setter.Value> <x:Static Member="Visibility.Collapsed" /> </Setter.Value> </Setter> <Trigger.Value> <x:Null /> </Trigger.Value> </Trigger> <Trigger Property="MenuItem.IsChecked"> <Setter Property="UIElement.Visibility" TargetName="GlyphPanel"> <Setter.Value> <x:Static Member="Visibility.Visible" /> </Setter.Value> </Setter> <Setter Property="UIElement.Visibility" TargetName="Icon"> <Setter.Value> <x:Static Member="Visibility.Collapsed" /> </Setter.Value> </Setter> <Trigger.Value> <s:Boolean>True</s:Boolean> </Trigger.Value> </Trigger> <Trigger Property="MenuItem.IsHighlighted"> <Setter Property="Shape.Fill" TargetName="Bg"> <Setter.Value> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <LinearGradientBrush.GradientStops> <!-- Changement des couleurs --> <GradientStop Color="#FFce9c8b" Offset="0" /> <GradientStop Color="#FFdca08b" Offset="1" /> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </Setter.Value> </Setter> <Setter Property="Shape.Stroke" TargetName="Bg"> <Setter.Value> <!-- Changement des couleurs --> <SolidColorBrush>#FFc1795e</SolidColorBrush> </Setter.Value> </Setter> <Setter Property="Shape.Stroke" TargetName="InnerBorder"> <Setter.Value> <!-- Changement des couleurs --> <SolidColorBrush>#FFb78f82</SolidColorBrush> </Setter.Value> </Setter> <Trigger.Value> <s:Boolean>True</s:Boolean> </Trigger.Value> </Trigger> <Trigger Property="UIElement.IsEnabled"> <Setter Property="TextElement.Foreground"> <Setter.Value> <SolidColorBrush>#FF9A9A9A</SolidColorBrush> </Setter.Value> </Setter> <Setter Property="Panel.Background" TargetName="GlyphPanel"> <Setter.Value> <SolidColorBrush>#FFEEE9E9</SolidColorBrush> </Setter.Value> </Setter> <Setter Property="Border.BorderBrush" TargetName="GlyphPanel"> <Setter.Value> <SolidColorBrush>#FFDBD6D6</SolidColorBrush> </Setter.Value> </Setter> <Setter Property="Shape.Fill" TargetName="Glyph"> <Setter.Value> <SolidColorBrush>#FF848589</SolidColorBrush> </Setter.Value> </Setter> <Trigger.Value> <s:Boolean>False</s:Boolean> </Trigger.Value> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> |