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> |