Themes/MaterialDesignTheme.SplitButton.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.Button.xaml" />
  </ResourceDictionary.MergedDictionaries>
 
  <!-- Base style for SplitButton -->
  <Style x:Key="MaterialDesignSplitButton" TargetType="{x:Type wpf:SplitButton}">
    <Style.Resources>
      <converters:CornerRadiusCloneConverter x:Key="LeftButtonCornerRadiusConverter" FixedTopRight="0" FixedBottomRight="0" />
      <converters:CornerRadiusCloneConverter x:Key="RightButtonCornerRadiusConverter" FixedTopLeft="0" FixedBottomLeft="0" />
      <converters:ThicknessCloneConverter x:Key="LeftButtonBorderThicknessConverter" FixedRight="0" />
    </Style.Resources>
 
    <Setter Property="Height" Value="32" />
    <Setter Property="BorderThickness" Value="1" />
    <Setter Property="HorizontalContentAlignment" Value="Center" />
    <Setter Property="Padding" Value="16,4,16,4" />
    <Setter Property="TextBlock.FontSize" Value="14" />
    <Setter Property="TextBlock.FontWeight" Value="Medium" />
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="wpf:ButtonAssist.CornerRadius" Value="2" />
    <Setter Property="wpf:RippleAssist.Feedback" Value="White" />
    <Setter Property="wpf:ElevationAssist.Elevation" Value="Dp0" />
    <Setter Property="SplitContentTemplate">
      <Setter.Value>
        <DataTemplate>
          <wpf:PackIcon Kind="ChevronDown" />
        </DataTemplate>
      </Setter.Value>
    </Setter>
 
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type wpf:SplitButton}">
          <Grid x:Name="OuterGrid"
                Margin="{TemplateBinding Margin}"
                Height="{TemplateBinding Height}"
                SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
                Width="{TemplateBinding Width}"
                Effect="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ElevationAssist.Elevation), Converter={x:Static converters:ShadowConverter.Instance}}">
            <Grid.ColumnDefinitions>
              <ColumnDefinition Width="*" />
              <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
 
            <Button x:Name="PART_LeftButton"
                    Grid.Column="0"
                    BorderThickness="{TemplateBinding BorderThickness, Converter={StaticResource LeftButtonBorderThicknessConverter}}"
                    Command="{TemplateBinding Command}"
                    CommandParameter="{TemplateBinding CommandParameter}"
                    CommandTarget="{TemplateBinding CommandTarget}"
                    Content="{TemplateBinding Content}"
                    ContentStringFormat="{TemplateBinding ContentStringFormat}"
                    ContentTemplate="{TemplateBinding ContentTemplate}"
                    ContentTemplateSelector="{TemplateBinding ContentTemplateSelector}"
                    FontSize="{TemplateBinding FontSize}"
                    FontFamily="{TemplateBinding FontFamily}"
                    FontStretch="{TemplateBinding FontStretch}"
                    FontStyle="{TemplateBinding FontStyle}"
                    FontWeight="{TemplateBinding FontWeight}"
                    Height="{TemplateBinding Height}"
                    HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                    Style="{TemplateBinding ButtonStyle}"
                    VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                    Padding="{TemplateBinding Padding}"
                    wpf:ElevationAssist.Elevation="Dp0"
                    wpf:ButtonAssist.CornerRadius="{TemplateBinding wpf:ButtonAssist.CornerRadius, Converter={StaticResource LeftButtonCornerRadiusConverter}}"/>
 
            <wpf:PopupBox x:Name="PART_PopupBox"
                          Grid.Column="1"
                          wpf:RippleAssist.IsDisabled="True"
                          Height="{TemplateBinding Height}"
                          Padding="0"
                          PopupUniformCornerRadius="{TemplateBinding PopupUniformCornerRadius}"
                          PopupElevation="{TemplateBinding PopupElevation}"
                          PlacementMode="{TemplateBinding PopupPlacementMode}"
                          PlacementTarget="{Binding ElementName=OuterGrid}"
                          Opacity="1">
              <wpf:PopupBox.ToggleContent>
                <Button x:Name="PART_RightButton"
                        BorderThickness="{TemplateBinding BorderThickness}"
                        Height="{Binding ElementName=PART_LeftButton, Path=ActualHeight}"
                        IsHitTestVisible="True"
                        Padding="{TemplateBinding Padding}"
                        Style="{TemplateBinding ButtonStyle}"
                        VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                        wpf:ElevationAssist.Elevation="Dp0"
                        wpf:ButtonAssist.CornerRadius="{TemplateBinding wpf:ButtonAssist.CornerRadius, Converter={StaticResource RightButtonCornerRadiusConverter}}"
                        wpf:RippleAssist.IsDisabled="False"
                        wpf:RippleAssist.IsCentered="False"
                        wpf:RippleAssist.ClipToBounds="True">
                  <ContentControl Content="{TemplateBinding SplitContent}"
                                  ContentStringFormat="{TemplateBinding SplitContentStringFormat}"
                                  ContentTemplate="{TemplateBinding SplitContentTemplate}"
                                  ContentTemplateSelector="{TemplateBinding SplitContentTemplateSelector}"/>
                </Button>
              </wpf:PopupBox.ToggleContent>
              <wpf:PopupBox.PopupContent>
                <ContentControl Content="{TemplateBinding PopupContent}"
                                ContentStringFormat="{TemplateBinding PopupContentStringFormat}"
                                ContentTemplate="{TemplateBinding PopupContentTemplate}"
                                ContentTemplateSelector="{TemplateBinding PopupContentTemplateSelector}"/>
              </wpf:PopupBox.PopupContent>
            </wpf:PopupBox>
 
          </Grid>
          <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
              <Setter TargetName="OuterGrid" Property="wpf:ShadowAssist.Darken" Value="True" />
            </Trigger>
            <Trigger Property="IsKeyboardFocused" Value="true">
              <Setter TargetName="OuterGrid" Property="wpf:ShadowAssist.Darken" Value="True" />
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
 
  <!-- Raised Button Style variations -->
 
  <Style x:Key="MaterialDesignRaisedSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignRaisedButton}" />
    <Setter Property="wpf:ElevationAssist.Elevation" Value="Dp2" />
  </Style>
 
  <Style x:Key="MaterialDesignRaisedLightSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignRaisedSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignRaisedLightButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignRaisedDarkSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignRaisedSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignRaisedDarkButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignRaisedSecondarySplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignRaisedSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignRaisedSecondaryButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignRaisedSecondaryLightSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignRaisedSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignRaisedSecondaryLightButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignRaisedSecondaryDarkSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignRaisedSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignRaisedSecondaryDarkButton}" />
  </Style>
 
  <!-- Outlined Button Style variations -->
 
  <Style x:Key="MaterialDesignOutlinedSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignOutlinedButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignOutlinedLightSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignOutlinedSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignOutlinedLightButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignOutlinedDarkSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignOutlinedSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignOutlinedDarkButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignOutlinedSecondarySplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignOutlinedSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignOutlinedSecondaryButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignOutlinedSecondaryLightSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignOutlinedSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignOutlinedSecondaryLightButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignOutlinedSecondaryDarkSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignOutlinedSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignOutlinedSecondaryDarkButton}" />
  </Style>
 
 
  <!-- Flat Button Style variations -->
 
  <Style x:Key="MaterialDesignFlatSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignFlatButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignFlatLightSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignFlatSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignFlatLightButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignFlatDarkSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignFlatSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignFlatDarkButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignFlatSecondarySplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignFlatSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignFlatSecondaryButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignFlatSecondaryLightSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignFlatSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignFlatSecondaryLightButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignFlatSecondaryDarkSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignFlatSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignFlatSecondaryDarkButton}" />
  </Style>
 
  <!-- Paper Button Style variations -->
 
  <Style x:Key="MaterialDesignPaperSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignPaperButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignPaperLightSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignPaperSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignPaperLightButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignPaperDarkSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignPaperSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignPaperDarkButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignPaperSecondarySplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignPaperSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignPaperSecondaryButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignPaperSecondaryLightSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignPaperSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignPaperSecondaryLightButton}" />
  </Style>
 
  <Style x:Key="MaterialDesignPaperSecondaryDarkSplitButton" TargetType="{x:Type wpf:SplitButton}" BasedOn="{StaticResource MaterialDesignPaperSplitButton}">
    <Setter Property="ButtonStyle" Value="{StaticResource MaterialDesignPaperSecondaryDarkButton}" />
  </Style>
 
</ResourceDictionary>