Themes/MaterialDesignTheme.ToolBar.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:converters="clr-namespace:MaterialDesignThemes.Wpf.Converters"
                    xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf">
 
  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.CheckBox.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ComboBox.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Menu.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.RadioButton.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Shadows.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBox.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Button.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ToggleButton.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Font.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ListBox.xaml" />
  </ResourceDictionary.MergedDictionaries>
 
  <Style x:Key="MaterialDesignToolBarVerticalOverflowButtonStyle" TargetType="{x:Type ToggleButton}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.ToolBar.Background}" />
    <Setter Property="MinHeight" Value="0" />
    <Setter Property="MinWidth" Value="0" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type ToggleButton}">
          <Border x:Name="Bd"
                  Background="{TemplateBinding Background}"
                  CornerRadius="0,0,3,3"
                  SnapsToDevicePixels="true">
            <Viewbox Width="16" Height="16">
              <Canvas Width="24" Height="24">
                <Path Data="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z" Fill="{TemplateBinding Foreground}" />
              </Canvas>
            </Viewbox>
          </Border>
          <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
              <!-- Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/ -->
            </Trigger>
            <Trigger Property="IsKeyboardFocused" Value="true">
              <!-- Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/ -->
            </Trigger>
            <Trigger Property="IsEnabled" Value="false">
              <Setter Property="Opacity" Value=".56" />
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Style.Triggers>
      <DataTrigger Binding="{Binding Source={x:Static SystemParameters.HighContrast}}" Value="true">
        <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
      </DataTrigger>
    </Style.Triggers>
  </Style>
 
  <Style x:Key="MaterialDesignToolBarHorizontalOverflowButtonStyle" TargetType="{x:Type ToggleButton}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.ToolBar.Background}" />
    <Setter Property="MinHeight" Value="0" />
    <Setter Property="MinWidth" Value="0" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type ToggleButton}">
          <Border x:Name="Bd"
                  Background="{TemplateBinding Background}"
                  CornerRadius="0,3,3,0"
                  SnapsToDevicePixels="true">
            <Viewbox Width="16"
                     Height="16"
                     Margin="8,0,8,0">
              <Canvas Width="24" Height="24">
                <Path Data="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z" Fill="{TemplateBinding Foreground}" />
              </Canvas>
            </Viewbox>
          </Border>
          <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
              <!-- Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/ -->
            </Trigger>
            <Trigger Property="IsKeyboardFocused" Value="true">
              <!-- Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/ -->
            </Trigger>
            <Trigger Property="IsEnabled" Value="false">
              <Setter Property="Opacity" Value=".56" />
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Style.Triggers>
      <DataTrigger Binding="{Binding Source={x:Static SystemParameters.HighContrast}}" Value="true">
        <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
      </DataTrigger>
    </Style.Triggers>
  </Style>
 
  <Style x:Key="MaterialDesignToolBarThumbStyle" TargetType="{x:Type Thumb}">
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type Thumb}">
          <Border Padding="{TemplateBinding Padding}"
                  Background="Transparent"
                  SnapsToDevicePixels="True">
            <Rectangle>
              <Rectangle.Fill>
                <DrawingBrush TileMode="Tile"
                              Viewbox="0,0,4,4"
                              ViewboxUnits="Absolute"
                              Viewport="0,0,4,4"
                              ViewportUnits="Absolute">
                  <DrawingBrush.Drawing>
                    <GeometryDrawing Brush="{DynamicResource MaterialDesign.Brush.ToolBar.Thumb.Foreground}" Geometry="M 0 0 L 0 2 L 2 2 L 2 0 z" />
                  </DrawingBrush.Drawing>
                </DrawingBrush>
              </Rectangle.Fill>
            </Rectangle>
          </Border>
          <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
              <Setter Property="Cursor" Value="SizeAll" />
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
 
  <Style x:Key="MaterialDesignToolBarMainPanelBorderStyle" TargetType="{x:Type Border}">
    <Setter Property="CornerRadius" Value="3,3,3,3" />
    <Setter Property="Margin" Value="0,0,11,0" />
  </Style>
 
  <Style x:Key="MaterialDesignToolBar" TargetType="{x:Type ToolBar}">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.ToolBar.Background}" />
    <Setter Property="ClipToBounds" Value="True" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type ToolBar}">
          <ControlTemplate.Resources>
            <Style TargetType="{x:Type wpf:PackIcon}">
              <Setter Property="FrameworkElement.Height" Value="22" />
              <Setter Property="FrameworkElement.Width" Value="22" />
            </Style>
            <Style TargetType="ListBox" BasedOn="{StaticResource MaterialDesignToolToggleFlatListBox}">
              <Setter Property="ItemContainerStyle">
                <Setter.Value>
                  <Style TargetType="ListBoxItem" BasedOn="{StaticResource MaterialDesignToolToggleListBoxItem}">
                    <Setter Property="HorizontalContentAlignment" Value="Center" />
                    <Setter Property="MinWidth" Value="54" />
                    <Setter Property="Padding" Value="16" />
                    <Setter Property="TextBlock.FontSize" Value="18" />
                    <Setter Property="TextBlock.FontWeight" Value="DemiBold" />
                  </Style>
                </Setter.Value>
              </Setter>
            </Style>
          </ControlTemplate.Resources>
          <DockPanel x:Name="Grid"
                     Margin="3,1,1,1"
                     Background="{TemplateBinding Background}"
                     SnapsToDevicePixels="true">
            <Grid x:Name="OverflowGrid"
                  HorizontalAlignment="Right"
                  DockPanel.Dock="Right">
              <ToggleButton x:Name="OverflowButton"
                            ClickMode="Press"
                            FocusVisualStyle="{x:Null}"
                            Foreground="{TemplateBinding Foreground}"
                            IsChecked="{Binding IsOverflowOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                            Style="{StaticResource MaterialDesignToolBarHorizontalOverflowButtonStyle}">
                <ToggleButton.Visibility>
                  <MultiBinding Converter="{x:Static converters:ToolBarOverflowButtonVisibilityConverter.Instance}">
                    <Binding Path="OverflowMode" RelativeSource="{RelativeSource TemplatedParent}" />
                    <Binding Path="HasOverflowItems" RelativeSource="{RelativeSource TemplatedParent}" />
                  </MultiBinding>
                </ToggleButton.Visibility>
              </ToggleButton>
              <Popup x:Name="OverflowPopup"
                     Margin="1"
                     AllowsTransparency="true"
                     Focusable="false"
                     IsOpen="{Binding IsOverflowOpen, RelativeSource={RelativeSource TemplatedParent}}"
                     Placement="Bottom"
                     PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}"
                     StaysOpen="false"
                     CacheMode="{Binding RelativeSource={RelativeSource Self}, Path=(wpf:ShadowAssist.CacheMode)}">
                <Border x:Name="ToolBarSubMenuBorder"
                        Margin="1"
                        Background="{DynamicResource MaterialDesign.Brush.ToolBar.Background}"
                        BorderBrush="{DynamicResource MaterialDesign.Brush.ToolBar.Overflow.Border}"
                        BorderThickness="1"
                        CornerRadius="2"
                        Effect="{StaticResource MaterialDesignShadowDepth2}"
                        RenderOptions.ClearTypeHint="Enabled"
                        TextBlock.FontWeight="ExtraBold">
                  <Border Background="Transparent">
                    <ToolBarOverflowPanel x:Name="PART_ToolBarOverflowPanel"
                                          Margin="2"
                                          FocusVisualStyle="{x:Null}"
                                          Focusable="true"
                                          KeyboardNavigation.DirectionalNavigation="Cycle"
                                          KeyboardNavigation.TabNavigation="Cycle"
                                          SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                          WrapWidth="200" />
                  </Border>
                </Border>
              </Popup>
            </Grid>
            <Border x:Name="MainPanelBorder"
                    Padding="{TemplateBinding Padding}"
                    Background="{TemplateBinding Background}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    BorderThickness="{TemplateBinding BorderThickness}"
                    Style="{StaticResource MaterialDesignToolBarMainPanelBorderStyle}">
              <DockPanel KeyboardNavigation.TabIndex="1" KeyboardNavigation.TabNavigation="Local">
                <Thumb x:Name="ToolBarThumb"
                       Width="10"
                       Margin="-3,-1,4,0"
                       Padding="6,5,1,3"
                       Style="{StaticResource MaterialDesignToolBarThumbStyle}" />
                <ContentPresenter x:Name="ToolBarHeader"
                                  Margin="4,0,4,0"
                                  HorizontalAlignment="Center"
                                  VerticalAlignment="Center"
                                  ContentSource="Header"
                                  SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                <ToolBarPanel x:Name="PART_ToolBarPanel"
                              Margin="0,0,2,0"
                              IsItemsHost="true"
                              SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
              </DockPanel>
            </Border>
          </DockPanel>
          <ControlTemplate.Triggers>
            <Trigger Property="IsOverflowOpen" Value="true">
              <Setter TargetName="ToolBarThumb" Property="IsEnabled" Value="false" />
            </Trigger>
            <Trigger Property="Header" Value="{x:Null}">
              <Setter TargetName="ToolBarHeader" Property="Visibility" Value="Collapsed" />
            </Trigger>
            <Trigger Property="ToolBarTray.IsLocked" Value="true">
              <Setter TargetName="ToolBarThumb" Property="Visibility" Value="Collapsed" />
            </Trigger>
            <Trigger SourceName="OverflowPopup" Property="HasDropShadow" Value="true">
              <Setter TargetName="ToolBarSubMenuBorder" Property="Margin" Value="5,5,5,5" />
            </Trigger>
            <Trigger Property="Orientation" Value="Vertical">
              <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.ToolBar.Background}" />
              <Setter TargetName="Grid" Property="Margin" Value="1,3,1,1" />
              <Setter TargetName="MainPanelBorder" Property="Margin" Value="0,0,0,11" />
              <Setter TargetName="OverflowButton" Property="Style" Value="{StaticResource MaterialDesignToolBarVerticalOverflowButtonStyle}" />
              <Setter TargetName="OverflowGrid" Property="DockPanel.Dock" Value="Bottom" />
              <Setter TargetName="OverflowGrid" Property="HorizontalAlignment" Value="Stretch" />
              <Setter TargetName="OverflowGrid" Property="VerticalAlignment" Value="Bottom" />
              <Setter TargetName="OverflowPopup" Property="Placement" Value="Right" />
              <Setter TargetName="PART_ToolBarPanel" Property="Margin" Value="1,0,2,2" />
              <Setter TargetName="ToolBarHeader" Property="DockPanel.Dock" Value="Top" />
              <Setter TargetName="ToolBarHeader" Property="Margin" Value="0,0,0,4" />
              <Setter TargetName="ToolBarThumb" Property="DockPanel.Dock" Value="Top" />
              <Setter TargetName="ToolBarThumb" Property="Height" Value="10" />
              <Setter TargetName="ToolBarThumb" Property="Margin" Value="-1,-3,0,0" />
              <Setter TargetName="ToolBarThumb" Property="Padding" Value="5,6,6,1" />
              <Setter TargetName="ToolBarThumb" Property="Width" Value="Auto" />
            </Trigger>
            <Trigger Property="IsEnabled" Value="false">
              <Setter Property="Opacity" Value=".56" />
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
 
  <Style x:Key="{x:Static ToolBar.CheckBoxStyleKey}"
         TargetType="{x:Type CheckBox}"
         BasedOn="{StaticResource MaterialDesignCheckBox}">
    <Setter Property="Margin" Value="8,0,8,0" />
  </Style>
  <Style x:Key="{x:Static ToolBar.ComboBoxStyleKey}"
         TargetType="{x:Type ComboBox}"
         BasedOn="{StaticResource MaterialDesignComboBox}">
    <Setter Property="Margin" Value="8,0,8,0" />
  </Style>
  <Style x:Key="{x:Static ToolBar.MenuStyleKey}"
         TargetType="{x:Type Menu}"
         BasedOn="{StaticResource MaterialDesignMenu}">
    <Setter Property="Margin" Value="8,0,8,0" />
  </Style>
  <Style x:Key="{x:Static ToolBar.RadioButtonStyleKey}"
         TargetType="{x:Type RadioButton}"
         BasedOn="{StaticResource MaterialDesignRadioButton}">
    <Setter Property="Margin" Value="8,0,8,0" />
  </Style>
  <Style x:Key="{x:Static ToolBar.SeparatorStyleKey}" TargetType="Separator">
    <Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.ToolBar.Separator}" />
    <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ToolBar.Separator}" />
    <Setter Property="Margin" Value="6,11,6,11" />
    <Setter Property="MinHeight" Value="1" />
    <Setter Property="SnapsToDevicePixels" Value="true" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type Separator}">
          <Border Background="{TemplateBinding Background}"
                  BorderBrush="{TemplateBinding BorderBrush}"
                  BorderThickness="{TemplateBinding BorderThickness}" />
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
  <Style x:Key="{x:Static ToolBar.TextBoxStyleKey}"
         TargetType="{x:Type TextBox}"
         BasedOn="{StaticResource MaterialDesignTextBox}">
    <Setter Property="Margin" Value="8,0,8,0" />
  </Style>
  <Style x:Key="{x:Static ToolBar.ToggleButtonStyleKey}"
         TargetType="{x:Type ToggleButton}"
         BasedOn="{StaticResource MaterialDesignSwitchToggleButton}">
    <Setter Property="Margin" Value="8,0,8,0" />
  </Style>
 
  <Style x:Key="{x:Static ToolBar.ButtonStyleKey}" TargetType="Button">
    <Setter Property="BorderThickness" Value="1" />
    <Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Foreground}" />
    <Setter Property="HorizontalContentAlignment" Value="Center" />
    <Setter Property="Padding" Value="16" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type Button}">
          <Border x:Name="border"
                  Background="Transparent"
                  CornerRadius="2">
            <wpf:Ripple Padding="{TemplateBinding Padding}"
                        HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                        VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                        Content="{TemplateBinding Content}"
                        ContentTemplate="{TemplateBinding ContentTemplate}"
                        Feedback="{TemplateBinding Foreground}"
                        Focusable="False"
                        SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
          </Border>
          <ControlTemplate.Triggers>
            <Trigger Property="IsEnabled" Value="false">
              <Setter Property="Opacity" Value=".56" />
            </Trigger>
            <Trigger Property="IsMouseOver" Value="true">
              <Setter TargetName="border" Property="Background" Value="{DynamicResource MaterialDesign.Brush.Button.FlatClick}" />
              <Setter TargetName="border" Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.Button.FlatClick}" />
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    <Setter Property="TextBlock.FontWeight" Value="DemiBold" />
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="wpf:RippleAssist.Feedback" Value="{DynamicResource MaterialDesign.Brush.Button.Ripple}" />
  </Style>
 
</ResourceDictionary>