123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- <MenuItem x:Class="CustomControls.ToolStripMenuItem" Style="{DynamicResource MenuItemStyle1}"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:mwt="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero">
- <MenuItem.Resources>
- <SolidColorBrush x:Key="Menu.Static.Background" Color="White"/>
- <SolidColorBrush x:Key="Menu.Static.Border" Color="#FF999999"/>
- <SolidColorBrush x:Key="Menu.Static.Foreground" Color="Black"/>
- <SolidColorBrush x:Key="Menu.Disabled.Foreground" Color="#FF707070"/>
- <SolidColorBrush x:Key="Menu.Margin.Background" Color="#FFF1F1F1"/>
- <SolidColorBrush x:Key="TopLevelItem.Static.Foreground" Color="Black"/>
- <SolidColorBrush x:Key="TopLevelItem.Disabled.Foreground" Color="#FF707070"/>
- <SolidColorBrush x:Key="MenuItem.Check.Background" Color="#3D26A0DA"/>
- <SolidColorBrush x:Key="MenuItem.Check.Border" Color="#FF26A0DA"/>
- <SolidColorBrush x:Key="MenuItem.Highlight.Background" Color="#3D26A0DA"/>
- <SolidColorBrush x:Key="MenuItem.Highlight.Border" Color="#FF26A0DA"/>
- <MenuScrollingVisibilityConverter x:Key="MenuScrollingVisibilityConverter"/>
- <Geometry x:Key="DownArrow">M 0,0 L 3.5,4 L 7,0 Z</Geometry>
- <Geometry x:Key="UpArrow">M 0,4 L 3.5,0 L 7,4 Z</Geometry>
- <Geometry x:Key="RightArrow">M 0,0 L 3.5,3.5 L 0,7</Geometry>
- <Geometry x:Key="Checkmark">M 0,2 L 3,5 L8,0</Geometry>
- <Style x:Key="MenuScrollButton" BasedOn="{x:Null}" TargetType="{x:Type RepeatButton}">
- <Setter Property="ClickMode" Value="Hover"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type RepeatButton}">
- <Border x:Name="templateRoot" Background="Transparent" BorderBrush="Transparent" BorderThickness="1" SnapsToDevicePixels="true">
- <ContentPresenter HorizontalAlignment="Center" Margin="6" VerticalAlignment="Center"/>
- </Border>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="{ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}" BasedOn="{x:Null}" TargetType="{x:Type ScrollViewer}">
- <Setter Property="HorizontalScrollBarVisibility" Value="Hidden"/>
- <Setter Property="VerticalScrollBarVisibility" Value="Auto"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type ScrollViewer}">
- <Grid SnapsToDevicePixels="true">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="*"/>
- </Grid.ColumnDefinitions>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="*"/>
- <RowDefinition Height="Auto"/>
- </Grid.RowDefinitions>
- <Border Grid.Column="0" Grid.Row="1">
- <ScrollContentPresenter CanContentScroll="{TemplateBinding CanContentScroll}" Margin="{TemplateBinding Padding}"/>
- </Border>
- <RepeatButton Command="{x:Static ScrollBar.LineUpCommand}" CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" Grid.Column="0" Focusable="false" Grid.Row="0" Style="{StaticResource MenuScrollButton}">
- <RepeatButton.Visibility>
- <MultiBinding ConverterParameter="0" Converter="{StaticResource MenuScrollingVisibilityConverter}" FallbackValue="Visibility.Collapsed">
- <Binding Path="ComputedVerticalScrollBarVisibility" RelativeSource="{RelativeSource TemplatedParent}"/>
- <Binding Path="VerticalOffset" RelativeSource="{RelativeSource TemplatedParent}"/>
- <Binding Path="ExtentHeight" RelativeSource="{RelativeSource TemplatedParent}"/>
- <Binding Path="ViewportHeight" RelativeSource="{RelativeSource TemplatedParent}"/>
- </MultiBinding>
- </RepeatButton.Visibility>
- <Path Data="{StaticResource UpArrow}" Fill="{DynamicResource Menu.Static.Foreground}"/>
- </RepeatButton>
- <RepeatButton Command="{x:Static ScrollBar.LineDownCommand}" CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" Grid.Column="0" Focusable="false" Grid.Row="2" Style="{StaticResource MenuScrollButton}">
- <RepeatButton.Visibility>
- <MultiBinding ConverterParameter="100" Converter="{StaticResource MenuScrollingVisibilityConverter}" FallbackValue="Visibility.Collapsed">
- <Binding Path="ComputedVerticalScrollBarVisibility" RelativeSource="{RelativeSource TemplatedParent}"/>
- <Binding Path="VerticalOffset" RelativeSource="{RelativeSource TemplatedParent}"/>
- <Binding Path="ExtentHeight" RelativeSource="{RelativeSource TemplatedParent}"/>
- <Binding Path="ViewportHeight" RelativeSource="{RelativeSource TemplatedParent}"/>
- </MultiBinding>
- </RepeatButton.Visibility>
- <Path Data="{StaticResource DownArrow}" Fill="{DynamicResource Menu.Static.Foreground}"/>
- </RepeatButton>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <ControlTemplate x:Key="{ComponentResourceKey ResourceId=TopLevelItemTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}" TargetType="{x:Type MenuItem}">
- <Border x:Name="templateRoot" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="true">
- <Grid VerticalAlignment="Center">
- <ContentPresenter ContentSource="Header" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
- </Grid>
- </Border>
- <ControlTemplate.Triggers>
- <Trigger Property="IsHighlighted" Value="True">
- <Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="{DynamicResource Menu.Static.Foreground}"/>
- <Setter Property="Background" TargetName="templateRoot" Value="{DynamicResource MenuItem.Highlight.Background}"/>
- <Setter Property="BorderBrush" TargetName="templateRoot" Value="{DynamicResource MenuItem.Highlight.Border}"/>
- </Trigger>
- <Trigger Property="IsEnabled" Value="False">
- <Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="{DynamicResource TopLevelItem.Disabled.Foreground}"/>
- </Trigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- <ControlTemplate x:Key="{ComponentResourceKey ResourceId=TopLevelHeaderTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}" TargetType="{x:Type MenuItem}">
- <Border x:Name="templateRoot" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="true">
- <Grid VerticalAlignment="Center">
- <ContentPresenter ContentSource="Header" Grid.Column="1" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
- <Popup x:Name="PART_Popup" AllowsTransparency="true" Focusable="false" IsOpen="{Binding IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}" Placement="Bottom" VerticalOffset="-1" PopupAnimation="{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}" PlacementTarget="{Binding ElementName=templateRoot}">
- <mwt:SystemDropShadowChrome Color="#71000000" Margin="0,0,5,5" SnapsToDevicePixels="True">
- <Grid>
- <Border x:Name="SubMenuBorder" Background="{DynamicResource Menu.Static.Background}" BorderBrush="{DynamicResource Menu.Static.Border}" BorderThickness="1" Padding="1">
- <ScrollViewer x:Name="SubMenuScrollViewer" Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}">
- <Grid RenderOptions.ClearTypeHint="Enabled">
- <Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
- <Rectangle x:Name="OpaqueRect" Fill="{Binding Background, ElementName=SubMenuBorder}" Height="{Binding ActualHeight, ElementName=SubMenuBorder}" Width="{Binding ActualWidth, ElementName=SubMenuBorder}"/>
- </Canvas>
- <Rectangle Fill="{DynamicResource Menu.Margin.Background}" Width="24" HorizontalAlignment="Left" />
- <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Cycle" Grid.IsSharedSizeScope="true" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" KeyboardNavigation.TabNavigation="Cycle"/>
- </Grid>
- </ScrollViewer>
- </Border>
- <ContentControl x:Name="ConnectorLine" Width="{Binding ActualWidth, ElementName=templateRoot}" Height="1" HorizontalAlignment="Left" VerticalAlignment="Top">
- <Rectangle Stroke="{DynamicResource Menu.Static.Background}" Margin="1,0,1,0"/>
- </ContentControl>
- </Grid>
- </mwt:SystemDropShadowChrome>
- </Popup>
- </Grid>
- </Border>
- <ControlTemplate.Triggers>
- <DataTrigger Binding="{Binding Source={x:Static SystemParameters.MenuDropAlignment}}" Value="True">
- <Setter Property="HorizontalAlignment" TargetName="ConnectorLine" Value="Right"/>
- </DataTrigger>
- <Trigger Property="IsSuspendingPopupAnimation" Value="true">
- <Setter Property="PopupAnimation" TargetName="PART_Popup" Value="None"/>
- </Trigger>
- <Trigger Property="IsHighlighted" Value="True">
- <Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="{DynamicResource Menu.Static.Foreground}"/>
- <Setter Property="Background" TargetName="templateRoot" Value="{DynamicResource MenuItem.Highlight.Background}"/>
- <Setter Property="BorderBrush" TargetName="templateRoot" Value="{DynamicResource MenuItem.Highlight.Border}"/>
- </Trigger>
- <Trigger Property="IsSubmenuOpen" Value="True">
- <Setter Property="Padding" TargetName="templateRoot" Value="0,0,0,1"/>
- <Setter Property="BorderThickness" TargetName="templateRoot" Value="1,1,1,0"/>
- <Setter Property="BorderBrush" TargetName="templateRoot" Value="{DynamicResource Menu.Static.Border}"/>
- <Setter Property="Background" TargetName="templateRoot" Value="{DynamicResource Menu.Static.Background}"/>
- </Trigger>
- <Trigger Property="IsEnabled" Value="False">
- <Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="{DynamicResource TopLevelItem.Disabled.Foreground}"/>
- </Trigger>
- <Trigger Property="ScrollViewer.CanContentScroll" SourceName="SubMenuScrollViewer" Value="false">
- <Setter Property="Canvas.Top" TargetName="OpaqueRect" Value="{Binding VerticalOffset, ElementName=SubMenuScrollViewer}"/>
- <Setter Property="Canvas.Left" TargetName="OpaqueRect" Value="{Binding HorizontalOffset, ElementName=SubMenuScrollViewer}"/>
- </Trigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- <ControlTemplate x:Key="{ComponentResourceKey ResourceId=SubmenuItemTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}" TargetType="{x:Type MenuItem}">
- <Border x:Name="templateRoot" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Height="22" SnapsToDevicePixels="true">
- <Grid Margin="-1">
- <Grid.ColumnDefinitions>
- <ColumnDefinition MinWidth="22" SharedSizeGroup="MenuItemIconColumnGroup" Width="Auto"/>
- <ColumnDefinition Width="13"/>
- <ColumnDefinition Width="*"/>
- <ColumnDefinition Width="30"/>
- <ColumnDefinition SharedSizeGroup="MenuItemIGTColumnGroup" Width="Auto"/>
- <ColumnDefinition Width="20"/>
- </Grid.ColumnDefinitions>
- <Path x:Name="CheckMark" Visibility="Hidden" Data="{StaticResource Checkmark}" FlowDirection="LeftToRight" Stroke="{DynamicResource Menu.Static.Foreground}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
- <ContentPresenter x:Name="Icon" ContentSource="Icon" HorizontalAlignment="Center" Height="16" Margin="3" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center" Width="16"/>
- <ContentPresenter x:Name="menuHeaderContainer" ContentSource="Header" Grid.Column="2" HorizontalAlignment="Left" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center"/>
- <TextBlock x:Name="menuGestureText" Grid.Column="4" Margin="{TemplateBinding Padding}" Opacity="0.7" Text="{TemplateBinding InputGestureText}" VerticalAlignment="Center"/>
- </Grid>
- </Border>
- <ControlTemplate.Triggers>
- <Trigger Property="Icon" Value="{x:Null}">
- <Setter Property="Visibility" TargetName="Icon" Value="Collapsed"/>
- </Trigger>
- <MultiTrigger>
- <MultiTrigger.Conditions>
- <Condition Property="Icon" Value="{x:Null}"/>
- <Condition Property="IsChecked" Value="True"/>
- </MultiTrigger.Conditions>
- <Setter Property="Visibility" TargetName="CheckMark" Value="Visible"/>
- </MultiTrigger>
- <Trigger Property="IsHighlighted" Value="True">
- <Setter Property="Background" TargetName="templateRoot" Value="{DynamicResource MenuItem.Highlight.Background}"/>
- <Setter Property="BorderBrush" TargetName="templateRoot" Value="{DynamicResource MenuItem.Highlight.Border}"/>
- </Trigger>
- <Trigger Property="IsEnabled" Value="False">
- <Setter Property="Stroke" TargetName="CheckMark" Value="{DynamicResource Menu.Disabled.Foreground}"/>
- <Setter Property="Opacity" TargetName="Icon" Value="0.3"/>
- <Setter Property="Opacity" TargetName="menuHeaderContainer" Value="0.3"/>
- <Setter Property="Opacity" TargetName="menuGestureText" Value="0.3"/>
- </Trigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- <ControlTemplate x:Key="{ComponentResourceKey ResourceId=SubmenuHeaderTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}" TargetType="{x:Type MenuItem}">
- <Border x:Name="templateRoot" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Height="22" SnapsToDevicePixels="true">
- <Grid Margin="-1">
- <Grid.ColumnDefinitions>
- <ColumnDefinition MinWidth="22" SharedSizeGroup="MenuItemIconColumnGroup" Width="Auto"/>
- <ColumnDefinition Width="13"/>
- <ColumnDefinition Width="*"/>
- <ColumnDefinition Width="30"/>
- <ColumnDefinition SharedSizeGroup="MenuItemIGTColumnGroup" Width="Auto"/>
- <ColumnDefinition Width="20"/>
- </Grid.ColumnDefinitions>
- <ContentPresenter x:Name="Icon" ContentSource="Icon" HorizontalAlignment="Center" Height="16" Margin="3" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center" Width="16"/>
- <ContentPresenter x:Name="menuHeaderContainer" ContentSource="Header" Grid.Column="2" HorizontalAlignment="Left" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center"/>
- <TextBlock x:Name="menuGestureText" Grid.Column="4" Margin="{TemplateBinding Padding}" Opacity="0.7" Text="{TemplateBinding InputGestureText}" VerticalAlignment="Center"/>
- <Path x:Name="RightArrow" Grid.Column="5" Data="{StaticResource RightArrow}" Stroke="{DynamicResource Menu.Static.Foreground}" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Center"/>
- <Popup x:Name="PART_Popup" AllowsTransparency="true" Focusable="false" HorizontalOffset="-1" IsOpen="{Binding IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}" Placement="Right" PopupAnimation="{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}" VerticalOffset="-2">
- <mwt:SystemDropShadowChrome Color="#71000000" Margin="0,0,5,5" SnapsToDevicePixels="True">
- <Border x:Name="SubMenuBorder" Background="{DynamicResource Menu.Static.Background}" BorderBrush="{DynamicResource Menu.Static.Border}" BorderThickness="1" Padding="1">
- <ScrollViewer x:Name="SubMenuScrollViewer" Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}">
- <Grid RenderOptions.ClearTypeHint="Enabled">
- <Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
- <Rectangle x:Name="OpaqueRect" Fill="{Binding Background, ElementName=SubMenuBorder}" Height="{Binding ActualHeight, ElementName=SubMenuBorder}" Width="{Binding ActualWidth, ElementName=SubMenuBorder}"/>
- </Canvas>
- <Rectangle Fill="{DynamicResource Menu.Margin.Background}" Width="24" HorizontalAlignment="Left" />
- <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Cycle" Grid.IsSharedSizeScope="true" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" KeyboardNavigation.TabNavigation="Cycle"/>
- </Grid>
- </ScrollViewer>
- </Border>
- </mwt:SystemDropShadowChrome>
- </Popup>
- </Grid>
- </Border>
- <ControlTemplate.Triggers>
- <Trigger Property="IsSuspendingPopupAnimation" Value="true">
- <Setter Property="PopupAnimation" TargetName="PART_Popup" Value="None"/>
- </Trigger>
- <Trigger Property="Icon" Value="{x:Null}">
- <Setter Property="Visibility" TargetName="Icon" Value="Collapsed"/>
- </Trigger>
- <Trigger Property="IsHighlighted" Value="True">
- <Setter Property="Background" TargetName="templateRoot" Value="{DynamicResource MenuItem.Highlight.Background}"/>
- <Setter Property="BorderBrush" TargetName="templateRoot" Value="{DynamicResource MenuItem.Highlight.Border}"/>
- </Trigger>
- <Trigger Property="IsEnabled" Value="False">
- <Setter Property="Stroke" TargetName="RightArrow" Value="{DynamicResource Menu.Disabled.Foreground}"/>
- <Setter Property="Opacity" TargetName="menuHeaderContainer" Value="0.3"/>
- <Setter Property="Opacity" TargetName="menuGestureText" Value="0.3"/>
- </Trigger>
- <Trigger Property="ScrollViewer.CanContentScroll" SourceName="SubMenuScrollViewer" Value="false">
- <Setter Property="Canvas.Top" TargetName="OpaqueRect" Value="{Binding VerticalOffset, ElementName=SubMenuScrollViewer}"/>
- <Setter Property="Canvas.Left" TargetName="OpaqueRect" Value="{Binding HorizontalOffset, ElementName=SubMenuScrollViewer}"/>
- </Trigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- <Style x:Key="MenuItemStyle1" TargetType="{x:Type MenuItem}">
- <Setter Property="HorizontalContentAlignment" Value="Left"/>
- <Setter Property="VerticalContentAlignment" Value="Center"/>
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="BorderBrush" Value="Transparent"/>
- <Setter Property="BorderThickness" Value="1"/>
- <Setter Property="Foreground" Value="{DynamicResource Menu.Static.Foreground}"/>
- <Setter Property="ScrollViewer.PanningMode" Value="Both"/>
- <Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
- <Setter Property="Template" Value="{DynamicResource {ComponentResourceKey ResourceId=SubmenuItemTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}}"/>
- <Style.Triggers>
- <Trigger Property="Role" Value="TopLevelHeader">
- <Setter Property="Foreground" Value="{DynamicResource TopLevelItem.Static.Foreground}"/>
- <Setter Property="Template" Value="{DynamicResource {ComponentResourceKey ResourceId=TopLevelHeaderTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}}"/>
- <Setter Property="Padding" Value="6,3,6,4"/>
- </Trigger>
- <Trigger Property="Role" Value="TopLevelItem">
- <Setter Property="Foreground" Value="{DynamicResource TopLevelItem.Static.Foreground}"/>
- <Setter Property="Template" Value="{DynamicResource {ComponentResourceKey ResourceId=TopLevelItemTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}}"/>
- <Setter Property="Padding" Value="6,3,6,4"/>
- </Trigger>
- <Trigger Property="Role" Value="SubmenuHeader">
- <Setter Property="Template" Value="{DynamicResource {ComponentResourceKey ResourceId=SubmenuHeaderTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}}"/>
- </Trigger>
- </Style.Triggers>
- </Style>
- </MenuItem.Resources>
- </MenuItem>
|