ButtonBaseStyle.xaml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. <ResourceDictionary
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:hc="clr-namespace:HandyControl.Controls">
  5. <Style
  6. x:Key="ButtonBaseStyle"
  7. TargetType="Button"
  8. BasedOn="{StaticResource ButtonBaseBaseStyle}">
  9. <Setter Property="BorderThickness" Value="1" />
  10. <Setter Property="Background" Value="{DynamicResource RegionBrush}" />
  11. <Setter Property="hc:BorderElement.CornerRadius" Value="{StaticResource DefaultCornerRadius}" />
  12. <Setter Property="Template">
  13. <Setter.Value>
  14. <ControlTemplate TargetType="Button">
  15. <hc:SimplePanel>
  16. <Border Background="{TemplateBinding Background}" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius), RelativeSource={RelativeSource TemplatedParent}}" />
  17. <Border
  18. BorderBrush="{TemplateBinding BorderBrush}"
  19. BorderThickness="{TemplateBinding BorderThickness}"
  20. CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius), RelativeSource={RelativeSource TemplatedParent}}">
  21. <StackPanel
  22. Margin="{TemplateBinding Padding}"
  23. HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
  24. VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
  25. Orientation="Horizontal">
  26. <Path
  27. x:Name="PathMain"
  28. Width="{TemplateBinding hc:IconElement.Width}"
  29. Height="{TemplateBinding hc:IconElement.Height}"
  30. Data="{TemplateBinding hc:IconElement.Geometry}"
  31. Fill="{TemplateBinding Foreground}"
  32. SnapsToDevicePixels="True"
  33. Stretch="Uniform" />
  34. <ContentPresenter
  35. x:Name="ContentPresenterMain"
  36. Margin="6,0,0,0"
  37. VerticalAlignment="Center"
  38. RecognizesAccessKey="True"
  39. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  40. </StackPanel>
  41. </Border>
  42. </hc:SimplePanel>
  43. <ControlTemplate.Triggers>
  44. <Trigger Property="Content" Value="{x:Null}">
  45. <Setter TargetName="ContentPresenterMain" Property="Visibility" Value="Collapsed" />
  46. </Trigger>
  47. <Trigger Property="hc:IconElement.Geometry" Value="{x:Null}">
  48. <Setter TargetName="PathMain" Property="Visibility" Value="Collapsed" />
  49. <Setter TargetName="ContentPresenterMain" Property="Margin" Value="0" />
  50. </Trigger>
  51. </ControlTemplate.Triggers>
  52. </ControlTemplate>
  53. </Setter.Value>
  54. </Setter>
  55. <Style.Triggers>
  56. <Trigger Property="IsMouseOver" Value="True">
  57. <Setter Property="Opacity" Value=".9" />
  58. </Trigger>
  59. <Trigger Property="IsPressed" Value="True">
  60. <Setter Property="Opacity" Value=".6" />
  61. </Trigger>
  62. <Trigger Property="IsEnabled" Value="False">
  63. <Setter Property="Opacity" Value="0.4" />
  64. </Trigger>
  65. </Style.Triggers>
  66. </Style>
  67. <Style
  68. x:Key="ButtonDashedBaseStyle"
  69. TargetType="Button"
  70. BasedOn="{StaticResource ButtonBaseStyle}">
  71. <Setter Property="Background" Value="Transparent" />
  72. <Setter Property="Template">
  73. <Setter.Value>
  74. <ControlTemplate TargetType="Button">
  75. <hc:DashedBorder
  76. Background="Transparent"
  77. BorderBrush="{TemplateBinding BorderBrush}"
  78. BorderDashArray="3,2"
  79. BorderThickness="{TemplateBinding BorderThickness}"
  80. CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius), RelativeSource={RelativeSource TemplatedParent}}">
  81. <StackPanel
  82. Margin="{TemplateBinding Padding}"
  83. HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
  84. VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
  85. Orientation="Horizontal">
  86. <Path
  87. x:Name="PathMain"
  88. Width="{TemplateBinding hc:IconElement.Width}"
  89. Height="{TemplateBinding hc:IconElement.Height}"
  90. Data="{TemplateBinding hc:IconElement.Geometry}"
  91. Fill="{TemplateBinding Foreground}"
  92. SnapsToDevicePixels="True"
  93. Stretch="Uniform" />
  94. <ContentPresenter
  95. x:Name="ContentPresenterMain"
  96. Margin="6,0,0,0"
  97. VerticalAlignment="Center"
  98. RecognizesAccessKey="True"
  99. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  100. </StackPanel>
  101. </hc:DashedBorder>
  102. <ControlTemplate.Triggers>
  103. <Trigger Property="Content" Value="{x:Null}">
  104. <Setter TargetName="ContentPresenterMain" Property="Visibility" Value="Collapsed" />
  105. </Trigger>
  106. <Trigger Property="hc:IconElement.Geometry" Value="{x:Null}">
  107. <Setter TargetName="PathMain" Property="Visibility" Value="Collapsed" />
  108. <Setter TargetName="ContentPresenterMain" Property="Margin" Value="0" />
  109. </Trigger>
  110. </ControlTemplate.Triggers>
  111. </ControlTemplate>
  112. </Setter.Value>
  113. </Setter>
  114. </Style>
  115. <Style
  116. x:Key="ButtonGroupItemBaseStyle"
  117. TargetType="Button"
  118. BasedOn="{StaticResource BaseStyle}">
  119. <Setter Property="Background" Value="{DynamicResource RegionBrush}" />
  120. <Setter Property="BorderBrush" Value="{DynamicResource BorderBrush}" />
  121. <Setter Property="BorderThickness" Value="1" />
  122. <Setter Property="VerticalAlignment" Value="Center" />
  123. <Setter Property="VerticalContentAlignment" Value="Center" />
  124. <Setter Property="HorizontalContentAlignment" Value="Center" />
  125. <Setter Property="hc:BorderElement.CornerRadius" Value="0" />
  126. <Setter Property="Height" Value="{StaticResource DefaultControlHeight}" />
  127. <Setter Property="Padding" Value="10,0" />
  128. <Setter Property="Margin" Value="-1,0,0,0" />
  129. <Setter Property="Template">
  130. <Setter.Value>
  131. <ControlTemplate TargetType="Button">
  132. <Border
  133. x:Name="BorderRoot"
  134. Background="{TemplateBinding Background}"
  135. BorderBrush="{TemplateBinding BorderBrush}"
  136. BorderThickness="{TemplateBinding BorderThickness}"
  137. CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius), RelativeSource={RelativeSource TemplatedParent}}">
  138. <StackPanel
  139. Margin="{TemplateBinding Padding}"
  140. HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
  141. VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
  142. Orientation="Horizontal">
  143. <Path
  144. x:Name="PathMain"
  145. Width="{TemplateBinding hc:IconElement.Width}"
  146. Height="{TemplateBinding hc:IconElement.Height}"
  147. Data="{TemplateBinding hc:IconElement.Geometry}"
  148. Fill="{TemplateBinding Foreground}"
  149. SnapsToDevicePixels="True"
  150. Stretch="Uniform" />
  151. <ContentPresenter
  152. x:Name="contentPresenter"
  153. Margin="6,0,0,0"
  154. VerticalAlignment="Center"
  155. RecognizesAccessKey="True"
  156. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  157. </StackPanel>
  158. </Border>
  159. <ControlTemplate.Triggers>
  160. <Trigger Property="IsMouseOver" Value="True">
  161. <Setter TargetName="contentPresenter" Property="TextElement.Foreground" Value="{DynamicResource PrimaryBrush}" />
  162. </Trigger>
  163. <Trigger Property="Content" Value="{x:Null}">
  164. <Setter TargetName="contentPresenter" Property="Visibility" Value="Collapsed" />
  165. </Trigger>
  166. <Trigger Property="hc:IconElement.Geometry" Value="{x:Null}">
  167. <Setter TargetName="PathMain" Property="Visibility" Value="Collapsed" />
  168. <Setter TargetName="contentPresenter" Property="Margin" Value="0" />
  169. </Trigger>
  170. </ControlTemplate.Triggers>
  171. </ControlTemplate>
  172. </Setter.Value>
  173. </Setter>
  174. <Style.Triggers>
  175. <Trigger Property="IsEnabled" Value="False">
  176. <Setter Property="Opacity" Value="0.4" />
  177. </Trigger>
  178. <DataTrigger Binding="{Binding Orientation, RelativeSource={RelativeSource AncestorType=hc:ButtonGroup}}" Value="Vertical">
  179. <Setter Property="Margin" Value="0,-1,0,0" />
  180. </DataTrigger>
  181. <Trigger Property="IsMouseOver" Value="True">
  182. <Setter Property="Background" Value="{DynamicResource SecondaryRegionBrush}" />
  183. </Trigger>
  184. <Trigger Property="IsPressed" Value="True">
  185. <Setter Property="Background" Value="{DynamicResource BorderBrush}" />
  186. </Trigger>
  187. </Style.Triggers>
  188. </Style>
  189. </ResourceDictionary>