<ResourceDictionary
    xmlns="https://github.com/avaloniaui"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:CompileBindings="True">
    <Design.PreviewWith>
        <StackPanel Margin="20">
            <SplitButton>Hello</SplitButton>
        </StackPanel>
    </Design.PreviewWith>

    <ControlTheme x:Key="SemiSplitButtonElement" TargetType="Button">
        <Setter Property="Foreground" Value="{DynamicResource ButtonDefaultPrimaryForeground}" />
        <Setter Property="CornerRadius" Value="{DynamicResource ButtonCornerRadius}" />
        <Setter Property="BorderThickness" Value="{DynamicResource ButtonBorderThickness}" />
        <Setter Property="Padding" Value="{DynamicResource ButtonDefaultPadding}" />
        <Setter Property="HorizontalAlignment" Value="Center" />
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="RenderTransform" Value="none" />
        <Setter Property="FontSize" Value="{DynamicResource ButtonDefaultFontSize}" />
        <Setter Property="FontWeight" Value="{DynamicResource ButtonDefaultFontWeight}" />
        <Setter Property="BackgroundSizing" Value="OuterBorderEdge" />
        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="Cursor" Value="Hand" />
        <Setter Property="Template">
            <ControlTemplate TargetType="Button">
                <ContentPresenter
                    x:Name="PART_ContentPresenter"
                    Padding="{TemplateBinding Padding}"
                    HorizontalAlignment="Stretch"
                    VerticalAlignment="Stretch"
                    HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                    VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                    Background="{TemplateBinding Background}"
                    BackgroundSizing="{TemplateBinding BackgroundSizing}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    BorderThickness="{TemplateBinding BorderThickness}"
                    Content="{TemplateBinding Content}"
                    ContentTemplate="{TemplateBinding ContentTemplate}"
                    CornerRadius="{TemplateBinding CornerRadius}"
                    RecognizesAccessKey="True"
                    TextElement.FontSize="{TemplateBinding FontSize}"
                    TextElement.FontWeight="{TemplateBinding FontWeight}"
                    UseLayoutRounding="False" />
            </ControlTemplate>
        </Setter>
    </ControlTheme>

    <ControlTheme x:Key="{x:Type SplitButton}" TargetType="SplitButton">
        <Setter Property="Background" Value="{DynamicResource ButtonDefaultBackground}" />
        <Setter Property="Foreground" Value="{DynamicResource ButtonDefaultPrimaryForeground}" />
        <Setter Property="BorderBrush" Value="{DynamicResource ButtonDefaultBorderBrush}" />
        <Setter Property="CornerRadius" Value="{DynamicResource ButtonCornerRadius}" />
        <Setter Property="BorderThickness" Value="{DynamicResource ButtonBorderThickness}" />
        <Setter Property="Padding" Value="{DynamicResource ButtonDefaultPadding}" />
        <Setter Property="RenderTransform" Value="none" />
        <Setter Property="HorizontalAlignment" Value="Center" />
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="FontSize" Value="{DynamicResource ButtonDefaultFontSize}" />
        <Setter Property="FontWeight" Value="{DynamicResource ButtonDefaultFontWeight}" />
        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="MinHeight" Value="{DynamicResource ButtonDefaultHeight}" />
        <Setter Property="Template">
            <ControlTemplate TargetType="SplitButton">
                <Border
                    BackgroundSizing="OuterBorderEdge"
                    ClipToBounds="True"
                    CornerRadius="{TemplateBinding CornerRadius}">
                    <DockPanel>
                        <Button
                            x:Name="PART_SecondaryButton"
                            Padding="4,0"
                            VerticalAlignment="Stretch"
                            HorizontalContentAlignment="Center"
                            VerticalContentAlignment="Center"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            CornerRadius="0"
                            DockPanel.Dock="Right"
                            Focusable="False"
                            KeyboardNavigation.IsTabStop="False"
                            Theme="{DynamicResource SemiSplitButtonElement}">
                            <PathIcon
                                Width="12"
                                Height="12"
                                Data="{DynamicResource SplitButtonIconGlyph}"
                                Foreground="{Binding $parent[Button].Foreground}" />
                        </Button>
                        <Rectangle
                            x:Name="SeparatorBorder"
                            Width="{DynamicResource SplitButtonSeparatorWidth}"
                            VerticalAlignment="Stretch"
                            DockPanel.Dock="Right"
                            Fill="{TemplateBinding BorderBrush}"
                            StrokeThickness="0" />
                        <Button
                            x:Name="PART_PrimaryButton"
                            Padding="{TemplateBinding Padding}"
                            HorizontalAlignment="Stretch"
                            VerticalAlignment="Stretch"
                            HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                            VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            Command="{TemplateBinding Command}"
                            CommandParameter="{TemplateBinding CommandParameter}"
                            Content="{TemplateBinding Content}"
                            ContentTemplate="{TemplateBinding ContentTemplate}"
                            CornerRadius="0"
                            Focusable="False"
                            FontFamily="{TemplateBinding FontFamily}"
                            FontSize="{TemplateBinding FontSize}"
                            FontWeight="{TemplateBinding FontWeight}"
                            KeyboardNavigation.IsTabStop="False"
                            Theme="{DynamicResource SemiSplitButtonElement}" />
                    </DockPanel>
                </Border>
            </ControlTemplate>
        </Setter>

        <Style Selector="^ /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonDefaultPrimaryForeground}" />
            <Setter Property="BorderBrush" Value="{DynamicResource ButtonDefaultBorderBrush}" />
            <Setter Property="Background" Value="{DynamicResource ButtonDefaultBackground}" />
            <Style Selector="^:pointerover">
                <Setter Property="Background" Value="{DynamicResource ButtonDefaultPointeroverBackground}" />
                <Setter Property="BorderBrush" Value="{DynamicResource ButtonDefaultPointeroverBorderBrush}" />
            </Style>
            <Style Selector="^:pressed">
                <Setter Property="Background" Value="{DynamicResource ButtonDefaultPressedBackground}" />
                <Setter Property="BorderBrush" Value="{DynamicResource ButtonDefaultPressedBorderBrush}" />
            </Style>
        </Style>


        <Style Selector="^.Secondary /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonDefaultSecondaryForeground}" />
        </Style>
        <Style Selector="^.Tertiary /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonDefaultTertiaryForeground}" />
        </Style>
        <Style Selector="^.Success /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonDefaultSuccessForeground}" />
        </Style>
        <Style Selector="^.Warning /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonDefaultWarningForeground}" />
        </Style>
        <Style Selector="^.Danger /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonDefaultDangerForeground}" />
        </Style>
        <Style Selector="^:checked">
            <Style Selector="^ /template/ Button">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidPrimaryBackground}" />
                <Setter Property="Foreground" Value="{DynamicResource ButtonSolidForeground}" />
                <Style Selector="^:pointerover">
                    <Setter Property="Background" Value="{DynamicResource ButtonSolidPrimaryPointeroverBackground}" />
                </Style>
                <Style Selector="^:pressed">
                    <Setter Property="Background" Value="{DynamicResource ButtonSolidPrimaryPressedBackground}" />
                </Style>
            </Style>

            <Style Selector="^.Secondary /template/ Button">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidSecondaryBackground}" />
                <Style Selector="^:pointerover">
                    <Setter Property="Background" Value="{DynamicResource ButtonSolidSecondaryPointeroverBackground}" />
                </Style>
                <Style Selector="^:pressed">
                    <Setter Property="Background" Value="{DynamicResource ButtonSolidSecondaryPressedBackground}" />
                </Style>
            </Style>
            <Style Selector="^.Tertiary /template/ Button">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidTertiaryBackground}" />
                <Style Selector="^:pointerover">
                    <Setter Property="Background" Value="{DynamicResource ButtonSolidTertiaryPointeroverBackground}" />
                </Style>
                <Style Selector="^:pressed">
                    <Setter Property="Background" Value="{DynamicResource ButtonSolidTertiaryPressedBackground}" />
                </Style>
            </Style>
            <Style Selector="^.Success /template/ Button">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidSuccessBackground}" />
                <Style Selector="^:pointerover">
                    <Setter Property="Background" Value="{DynamicResource ButtonSolidSuccessPointeroverBackground}" />
                </Style>
                <Style Selector="^:pressed">
                    <Setter Property="Background" Value="{DynamicResource ButtonSolidSuccessPressedBackground}" />
                </Style>
            </Style>
            <Style Selector="^.Warning /template/ Button">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidWarningBackground}" />
                <Style Selector="^:pointerover">
                    <Setter Property="Background" Value="{DynamicResource ButtonSolidWarningPointeroverBackground}" />
                </Style>
                <Style Selector="^:pressed">
                    <Setter Property="Background" Value="{DynamicResource ButtonSolidWarningPressedBackground}" />
                </Style>
            </Style>
            <Style Selector="^.Danger /template/ Button">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidDangerBackground}" />
                <Style Selector="^:pointerover">
                    <Setter Property="Background" Value="{DynamicResource ButtonSolidDangerPointeroverBackground}" />
                </Style>
                <Style Selector="^:pressed">
                    <Setter Property="Background" Value="{DynamicResource ButtonSolidDangerPressedBackground}" />
                </Style>
            </Style>
        </Style>
        <Style Selector="^.Large /template/ Button#PART_PrimaryButton">
            <Setter Property="Padding" Value="{DynamicResource ButtonLargePadding}" />
        </Style>
        <Style Selector="^.Large">
            <Setter Property="MinHeight" Value="{DynamicResource ButtonLargeHeight}" />
        </Style>
        <Style Selector="^.Small /template/ Button#PART_PrimaryButton">
            <Setter Property="Padding" Value="{DynamicResource ButtonSmallPadding}" />
        </Style>
        <Style Selector="^.Small">
            <Setter Property="MinHeight" Value="{DynamicResource ButtonSmallHeight}" />
        </Style>
        <Style Selector="^:disabled /template/ Button">
            <Setter Property="Background" Value="{DynamicResource ButtonDefaultBackground}" />
            <Setter Property="Foreground" Value="{DynamicResource ButtonDefaultDisabledForeground}" />
        </Style>
        <!-- only for ToggleSplitButton -->
        <Style Selector="^:checked:disabled /template/ Button">
            <Setter Property="Background" Value="{DynamicResource ButtonSolidDisabledBackground}" />
        </Style>
    </ControlTheme>

    <ControlTheme
        x:Key="SolidSplitButton"
        BasedOn="{StaticResource {x:Type SplitButton}}"
        TargetType="SplitButton">
        <Style Selector="^ /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonSolidForeground}" />
            <Setter Property="Background" Value="{DynamicResource ButtonSolidPrimaryBackground}" />

            <Style Selector="^:pointerover">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidPrimaryPointeroverBackground}" />
            </Style>
            <Style Selector="^:pressed">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidPrimaryPressedBackground}" />
            </Style>
        </Style>

        <Style Selector="^.Primary /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonSolidForeground}" />
            <Setter Property="Background" Value="{DynamicResource ButtonSolidPrimaryBackground}" />
            <Style Selector="^:pointerover">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidPrimaryPointeroverBackground}" />
            </Style>
            <Style Selector="^:pressed">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidPrimaryPressedBackground}" />
            </Style>
        </Style>
        <Style Selector="^.Secondary /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonSolidForeground}" />
            <Setter Property="Background" Value="{DynamicResource ButtonSolidSecondaryBackground}" />
            <Style Selector="^:pointerover">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidSecondaryPointeroverBackground}" />
            </Style>
            <Style Selector="^:pressed">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidSecondaryPressedBackground}" />
            </Style>
        </Style>
        <Style Selector="^.Tertiary /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonSolidForeground}" />
            <Setter Property="Background" Value="{DynamicResource ButtonSolidTertiaryBackground}" />
            <Style Selector="^:pointerover">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidTertiaryPointeroverBackground}" />
            </Style>
            <Style Selector="^:pressed">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidTertiaryPressedBackground}" />
            </Style>
        </Style>
        <Style Selector="^.Success /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonSolidForeground}" />
            <Setter Property="Background" Value="{DynamicResource ButtonSolidSuccessBackground}" />
            <Style Selector="^:pointerover">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidSuccessPointeroverBackground}" />
            </Style>
            <Style Selector="^:pressed">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidSuccessPressedBackground}" />
            </Style>
        </Style>
        <Style Selector="^.Warning /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonSolidForeground}" />
            <Setter Property="Background" Value="{DynamicResource ButtonSolidWarningBackground}" />
            <Style Selector="^:pointerover">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidWarningPointeroverBackground}" />
            </Style>
            <Style Selector="^:pressed">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidWarningPressedBackground}" />
            </Style>
        </Style>
        <Style Selector="^.Danger /template/ Button">
            <Setter Property="Foreground" Value="{DynamicResource ButtonSolidForeground}" />
            <Setter Property="Background" Value="{DynamicResource ButtonSolidDangerBackground}" />
            <Style Selector="^:pointerover">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidDangerPointeroverBackground}" />
            </Style>
            <Style Selector="^:pressed">
                <Setter Property="Background" Value="{DynamicResource ButtonSolidDangerPressedBackground}" />
            </Style>
        </Style>

        <Style Selector="^:disabled /template/ Button">
            <Setter Property="Background" Value="{DynamicResource ButtonSolidDisabledBackground}" />
            <Setter Property="Foreground" Value="{DynamicResource ButtonDefaultDisabledForeground}" />
        </Style>
    </ControlTheme>

    <ControlTheme
        x:Key="OutlineSplitButton"
        BasedOn="{StaticResource {x:Type SplitButton}}"
        TargetType="SplitButton">
        <Style Selector="^ /template/ Button">
            <Setter Property="Background" Value="{DynamicResource ButtonOutlineBackground}" />
            <Setter Property="BorderBrush" Value="{DynamicResource ButtonOutlineBorderBrush}" />
            <Style Selector="^:pointerover">
                <Setter Property="Background" Value="{DynamicResource ButtonOutlinePointeroverBackground}" />
            </Style>
            <Style Selector="^:pressed">
                <Setter Property="Background" Value="{DynamicResource ButtonOutlinePressedBackground}" />
            </Style>
        </Style>
        <Style Selector="^.Success /template/ Button">
            <Setter Property="BorderBrush" Value="{DynamicResource ButtonOutlineSuccessBorderBrush}" />
        </Style>
        <Style Selector="^.Warning /template/ Button">
            <Setter Property="BorderBrush" Value="{DynamicResource ButtonOutlineWarningBorderBrush}" />
        </Style>
        <Style Selector="^.Danger /template/ Button">
            <Setter Property="BorderBrush" Value="{DynamicResource ButtonOutlineDangerBorderBrush}" />
        </Style>
        <Style Selector="^:disabled /template/ Button">
            <Setter Property="BorderBrush" Value="{DynamicResource ButtonOutlineBorderBrush}" />
            <Setter Property="Background" Value="{DynamicResource ButtonOutlineBackground}" />
            <Setter Property="Foreground" Value="{DynamicResource ButtonDefaultDisabledForeground}" />
        </Style>
    </ControlTheme>

    <ControlTheme
        x:Key="BorderlessSplitButton"
        BasedOn="{StaticResource {x:Type SplitButton}}"
        TargetType="SplitButton">
        <Style Selector="^ /template/ Button">
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="BorderBrush" Value="Transparent" />
        </Style>
        <Style Selector="^:disabled /template/ Button">
            <Setter Property="BorderBrush" Value="Transparent" />
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="Foreground" Value="{DynamicResource ButtonDefaultDisabledForeground}" />
        </Style>
    </ControlTheme>
</ResourceDictionary>