ToolStripSplitButton.xaml 6.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <local:DropDownButtonBase Style="{DynamicResource ButtonStyle1}" x:Class="CustomControls.ToolStripSplitButton"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:local="clr-namespace:CustomControls">
  5. <Button.Resources>
  6. <SolidColorBrush x:Key="Button.Static.Background" Color="Transparent"/>
  7. <SolidColorBrush x:Key="Button.Static.Border" Color="Transparent"/>
  8. <SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/>
  9. <SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/>
  10. <SolidColorBrush x:Key="Button.Arrow.Background" Color="#FF404040"/>
  11. <Style x:Key="ButtonStyle1" TargetType="{x:Type local:DropDownButtonBase}">
  12. <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
  13. <Setter Property="Background" Value="{DynamicResource Button.Static.Background}"/>
  14. <Setter Property="BorderBrush" Value="{DynamicResource Button.Static.Border}"/>
  15. <Setter Property="BorderThickness" Value="1"/>
  16. <Setter Property="HorizontalContentAlignment" Value="Center"/>
  17. <Setter Property="VerticalContentAlignment" Value="Center"/>
  18. <Setter Property="Padding" Value="1"/>
  19. <Setter Property="Template">
  20. <Setter.Value>
  21. <ControlTemplate TargetType="{x:Type local:ToolStripSplitButton}">
  22. <DockPanel x:Name="panel1">
  23. <Border x:Name="split" DockPanel.Dock="Right" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,1,1,1" SnapsToDevicePixels="true">
  24. <Path x:Name="arrow" Margin="2" Fill="{DynamicResource Button.Arrow.Background}" Data="M 0 0 L 3 3 L 6 0 Z" HorizontalAlignment="Center" VerticalAlignment="Center"/>
  25. </Border>
  26. <Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
  27. <StackPanel x:Name="panel2" Orientation="Horizontal" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
  28. <Image x:Name="image" Source="{TemplateBinding Image}" Width="{TemplateBinding ImageWidth}" Height="{TemplateBinding ImageHeight}" Margin="1,1,2,0"/>
  29. <TextBlock x:Name="text" Text="{TemplateBinding Text}" Margin="4,0,4,0" TextWrapping="Wrap"/>
  30. </StackPanel>
  31. </Border>
  32. </DockPanel>
  33. <ControlTemplate.Triggers>
  34. <Trigger Property="IsMouseOver" SourceName="split" Value="true">
  35. <Setter Property="Background" TargetName="split" Value="{DynamicResource Button.MouseOver.Background}"/>
  36. </Trigger>
  37. <Trigger Property="IsMouseOver" SourceName="border" Value="true">
  38. <Setter Property="Background" TargetName="border" Value="{DynamicResource Button.MouseOver.Background}"/>
  39. </Trigger>
  40. <Trigger Property="IsMouseOver" Value="true">
  41. <Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource Button.MouseOver.Border}"/>
  42. <Setter Property="BorderBrush" TargetName="split" Value="{DynamicResource Button.MouseOver.Border}"/>
  43. </Trigger>
  44. <Trigger Property="IsVertical" Value="true">
  45. <Setter Property="DockPanel.Dock" TargetName="split" Value="Bottom"/>
  46. <Setter Property="Orientation" TargetName="panel2" Value="Vertical"/>
  47. <Setter Property="Height" TargetName="split" Value="16"/>
  48. <Setter Property="BorderThickness" TargetName="split" Value="1,0,1,1"/>
  49. <Setter Property="TextAlignment" TargetName="text" Value="Center"/>
  50. <Setter Property="Data" TargetName="arrow" Value="M0,0 L4,4 L8,0"/>
  51. <Setter Property="Fill" TargetName="arrow" Value="{x:Null}"/>
  52. <Setter Property="Stroke" TargetName="arrow" Value="{DynamicResource Button.Arrow.Background}"/>
  53. </Trigger>
  54. <Trigger Property="IsDropDownOpen" Value="true">
  55. <Setter Property="Background" TargetName="border" Value="{DynamicResource Button.MouseOver.Background}"/>
  56. <Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource Button.MouseOver.Border}"/>
  57. <Setter Property="Background" TargetName="split" Value="{DynamicResource Button.MouseOver.Background}"/>
  58. <Setter Property="BorderBrush" TargetName="split" Value="{DynamicResource Button.MouseOver.Border}"/>
  59. </Trigger>
  60. <Trigger Property="IsEnabled" Value="false">
  61. <Setter Property="Opacity" TargetName="image" Value="0.3"/>
  62. <Setter Property="Opacity" TargetName="text" Value="0.5"/>
  63. <Setter Property="Opacity" TargetName="arrow" Value="0.5"/>
  64. </Trigger>
  65. <Trigger Property="Image" Value="{x:Null}">
  66. <Setter Property="Visibility" TargetName="image" Value="Collapsed"/>
  67. </Trigger>
  68. <Trigger Property="Text" Value="">
  69. <Setter Property="Visibility" TargetName="text" Value="Collapsed"/>
  70. </Trigger>
  71. </ControlTemplate.Triggers>
  72. </ControlTemplate>
  73. </Setter.Value>
  74. </Setter>
  75. </Style>
  76. </Button.Resources>
  77. </local:DropDownButtonBase>