Files
Shrlalgo.RvKits/WPFDark/StandardControls/Menu.xaml
ShrlAlgo 4d35cadb56 更新
2025-07-11 09:20:23 +08:00

206 lines
11 KiB
XML

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:controls="clr-namespace:WPFDark.Controls"
xmlns:wpf="clr-namespace:WPFDark"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type MenuItem}" x:Key="MenuItemBaseStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type MenuItem}">
<Border
Background="Transparent"
BorderThickness="0"
x:Name="Border">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition
MinWidth="20.0"
SharedSizeGroup="ColumnGroupIcon"
Width="Auto"
x:Name="ColumnIcon" />
<ColumnDefinition SharedSizeGroup="ColumnGroupHeader" Width="Auto" />
<ColumnDefinition SharedSizeGroup="ColumnGroupInputGesture" Width="Auto" />
<ColumnDefinition Width="14" x:Name="ColumnArrow" />
</Grid.ColumnDefinitions>
<ContentPresenter
ContentSource="Icon"
Grid.Column="0"
VerticalAlignment="Center"
x:Name="IconPresenter" />
<ContentPresenter
ContentSource="Header"
Grid.Column="1"
Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"
VerticalAlignment="Center" />
<ContentPresenter
ContentSource="InputGestureText"
Grid.Column="2"
Margin="24,1,8,1"
VerticalAlignment="Center"
x:Name="InputGesturePresenter" />
<Path
Data="M 4 0 L 8 4 L 4 8 Z"
Fill="{DynamicResource ForegroundBrushKey}"
Grid.Column="3"
HorizontalAlignment="Right"
Margin="4,0,6,0"
VerticalAlignment="Center"
x:Name="Arrow" />
<Popup
AllowsTransparency="True"
Focusable="False"
Grid.Column="0"
HorizontalOffset="-1"
IsOpen="{Binding IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}"
Placement="Right"
PopupAnimation="None"
SnapsToDevicePixels="True"
UseLayoutRounding="True"
x:Name="SubMenuPopup">
<controls:BiaClippingBorder
Background="{DynamicResource SubmenuItemBackground}"
BorderBrush="{DynamicResource MenuItemHighlightedBackground}"
BorderThickness="1"
Margin="0,0,8,8"
SnapsToDevicePixels="True"
UseLayoutRounding="True">
<StackPanel
Grid.IsSharedSizeScope="True"
IsItemsHost="True"
KeyboardNavigation.DirectionalNavigation="Cycle" />
<Border.Effect>
<DropShadowEffect Color="Black" ShadowDepth="2.0" />
</Border.Effect>
</controls:BiaClippingBorder>
</Popup>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Role" Value="TopLevelHeader">
<Setter Property="Padding" Value="8,4" />
<Setter Property="Placement" TargetName="SubMenuPopup" Value="Bottom" />
<Setter Property="MinWidth" TargetName="ColumnIcon" Value="0.0" />
<Setter Property="Width" TargetName="ColumnArrow" Value="Auto" />
<Setter Property="Visibility" TargetName="IconPresenter" Value="Collapsed" />
<Setter Property="Visibility" TargetName="InputGesturePresenter" Value="Collapsed" />
<Setter Property="Visibility" TargetName="Arrow" Value="Collapsed" />
</Trigger>
<Trigger Property="Role" Value="TopLevelItem">
<Setter Property="Padding" Value="8,4" />
<Setter Property="MinWidth" TargetName="ColumnIcon" Value="0.0" />
<Setter Property="Width" TargetName="ColumnArrow" Value="Auto" />
<Setter Property="Visibility" TargetName="IconPresenter" Value="Collapsed" />
<Setter Property="Visibility" TargetName="InputGesturePresenter" Value="Collapsed" />
<Setter Property="Visibility" TargetName="Arrow" Value="Collapsed" />
</Trigger>
<Trigger Property="Role" Value="SubmenuHeader">
<Setter Property="DockPanel.Dock" Value="Top" />
<Setter Property="Padding" Value="12,4,0,4" />
<Setter Property="MinHeight" TargetName="Border" Value="24.0" />
<Setter Property="Background" TargetName="Border" Value="{DynamicResource SubmenuItemBackground}" />
</Trigger>
<Trigger Property="Role" Value="SubmenuItem">
<Setter Property="DockPanel.Dock" Value="Top" />
<Setter Property="Padding" Value="12,4,0,4" />
<Setter Property="Visibility" TargetName="Arrow" Value="Collapsed" />
<Setter Property="MinHeight" TargetName="Border" Value="24.0" />
<Setter Property="Background" TargetName="Border" Value="{DynamicResource SubmenuItemBackground}" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsHighlighted" Value="True" />
<Condition Property="Role" Value="TopLevelHeader" />
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Border" Value="{DynamicResource MenuItemHighlightedBackground}" />
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsHighlighted" Value="True" />
<Condition Property="Role" Value="TopLevelItem" />
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Border" Value="{DynamicResource MenuItemHighlightedBackground}" />
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsHighlighted" Value="True" />
<Condition Property="Role" Value="SubmenuHeader" />
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Border" Value="{DynamicResource SubmenuItemBackgroundHighlighted}" />
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsHighlighted" Value="True" />
<Condition Property="Role" Value="SubmenuItem" />
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Border" Value="{DynamicResource SubmenuItemBackgroundHighlighted}" />
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSubmenuOpen" Value="True" />
<Condition Property="Role" Value="TopLevelHeader" />
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Border" Value="{DynamicResource SubmenuItemBackground}" />
<Setter Property="BorderBrush" TargetName="Border" Value="{DynamicResource MenuSeparatorBorderBrush}" />
</MultiTrigger>
<Trigger Property="IsSubmenuOpen" Value="True">
<Setter Property="Fill" TargetName="Arrow" Value="{DynamicResource AccentBrushKey}" />
</Trigger>
<Trigger Property="Icon" Value="{x:Null}">
<Setter Property="Visibility" TargetName="IconPresenter" Value="Collapsed" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource InactiveForegroundBrushKey}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type Menu}">
<Setter Property="FontFamily" Value="{DynamicResource WPFDarkFontFamily}" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Style.Resources>
<Style TargetType="{x:Type Separator}" x:Key="{x:Static MenuItem.SeparatorStyleKey}">
<Setter Property="Height" Value="1.0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Separator}">
<Rectangle Fill="{DynamicResource MenuSeparatorBorderBrush}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style BasedOn="{StaticResource MenuItemBaseStyle}" TargetType="{x:Type MenuItem}" />
</Style.Resources>
</Style>
</ResourceDictionary>