Advertisement
MattMcManis

WPF ComboBox Red & Blue Template

Sep 11th, 2016
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 42.85 KB | None | 0 0
  1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  2. xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2" x:Class="WpfApplication23.MainWindow"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  4.  
  5. <Style x:Key="FocusVisual">
  6. <Setter Property="Control.Template">
  7. <Setter.Value>
  8. <ControlTemplate>
  9. <Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
  10. </ControlTemplate>
  11. </Setter.Value>
  12. </Setter>
  13. </Style>
  14. <LinearGradientBrush x:Key="ComboBox.Static.Background" EndPoint="0,1" StartPoint="0,0">
  15. <GradientStop Color="#FFF0F0F0" Offset="0.0"/>
  16. <GradientStop Color="#FFE5E5E5" Offset="1.0"/>
  17. </LinearGradientBrush>
  18. <SolidColorBrush x:Key="ComboBox.Static.Border" Color="#FFACACAC"/>
  19. <SolidColorBrush x:Key="ComboBox.Static.Editable.Background" Color="#FFFFFFFF"/>
  20. <SolidColorBrush x:Key="ComboBox.Static.Editable.Border" Color="#FFABADB3"/>
  21. <SolidColorBrush x:Key="ComboBox.Static.Editable.Button.Background" Color="Transparent"/>
  22. <SolidColorBrush x:Key="ComboBox.Static.Editable.Button.Border" Color="Transparent"/>
  23. <SolidColorBrush x:Key="ComboBox.MouseOver.Glyph" Color="#FF000000"/>
  24. <LinearGradientBrush x:Key="ComboBox.MouseOver.Background" EndPoint="0,1" StartPoint="0,0">
  25. <GradientStop Color="#FFECF4FC" Offset="0.0"/>
  26. <GradientStop Color="#FFDCECFC" Offset="1.0"/>
  27. </LinearGradientBrush>
  28. <SolidColorBrush x:Key="ComboBox.MouseOver.Border" Color="#FF7EB4EA"/>
  29. <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Background" Color="#FFFFFFFF"/>
  30. <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Border" Color="#FF7EB4EA"/>
  31. <LinearGradientBrush x:Key="ComboBox.MouseOver.Editable.Button.Background" EndPoint="0,1" StartPoint="0,0">
  32. <GradientStop Color="#FFEBF4FC" Offset="0.0"/>
  33. <GradientStop Color="#FFDCECFC" Offset="1.0"/>
  34. </LinearGradientBrush>
  35. <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Button.Border" Color="#FF7EB4EA"/>
  36. <SolidColorBrush x:Key="ComboBox.Pressed.Glyph" Color="#FF000000"/>
  37. <LinearGradientBrush x:Key="ComboBox.Pressed.Background" EndPoint="0,1" StartPoint="0,0">
  38. <GradientStop Color="#FFDAECFC" Offset="0.0"/>
  39. <GradientStop Color="#FFC4E0FC" Offset="1.0"/>
  40. </LinearGradientBrush>
  41. <SolidColorBrush x:Key="ComboBox.Pressed.Border" Color="#FF569DE5"/>
  42. <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Background" Color="#FFFFFFFF"/>
  43. <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Border" Color="#FF569DE5"/>
  44. <LinearGradientBrush x:Key="ComboBox.Pressed.Editable.Button.Background" EndPoint="0,1" StartPoint="0,0">
  45. <GradientStop Color="#FFDAEBFC" Offset="0.0"/>
  46. <GradientStop Color="#FFC4E0FC" Offset="1.0"/>
  47. </LinearGradientBrush>
  48. <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Button.Border" Color="#FF569DE5"/>
  49. <SolidColorBrush x:Key="ComboBox.Disabled.Glyph" Color="#FFBFBFBF"/>
  50. <SolidColorBrush x:Key="ComboBox.Disabled.Background" Color="#FFF0F0F0"/>
  51. <SolidColorBrush x:Key="ComboBox.Disabled.Border" Color="#FFD9D9D9"/>
  52. <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Background" Color="#FFFFFFFF"/>
  53. <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Border" Color="#FFBFBFBF"/>
  54. <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Button.Background" Color="Transparent"/>
  55. <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Button.Border" Color="Transparent"/>
  56. <SolidColorBrush x:Key="ComboBox.Static.Glyph" Color="#FF606060"/>
  57.  
  58. <!-- Red Brush -->
  59. <LinearGradientBrush x:Key="ComboBoxRedStyle" EndPoint="0,1" StartPoint="0,0">
  60. <GradientStop Color="Red" Offset="0.0"/>
  61. <GradientStop Color="Red" Offset="1.0"/>
  62. </LinearGradientBrush>
  63. <!-- Red Border -->
  64. <SolidColorBrush x:Key="ComboBoxRedBorderStyle" Color="Red"/>
  65.  
  66. <!-- Blue Brush -->
  67. <LinearGradientBrush x:Key="ComboBoxBlueStyle" EndPoint="0,1" StartPoint="0,0">
  68. <GradientStop Color="Blue" Offset="0.0"/>
  69. <GradientStop Color="Blue" Offset="1.0"/>
  70. </LinearGradientBrush>
  71. <!-- Blue Border -->
  72. <SolidColorBrush x:Key="ComboBoxBlueBorderStyle" Color="Blue"/>
  73.  
  74.  
  75. <!-- Red Toggle Button-->
  76. <Style x:Key="ComboBoxToggleButtonRed" TargetType="{x:Type ToggleButton}">
  77. <Setter Property="OverridesDefaultStyle" Value="true"/>
  78. <Setter Property="IsTabStop" Value="false"/>
  79. <Setter Property="Focusable" Value="false"/>
  80. <Setter Property="ClickMode" Value="Press"/>
  81. <Setter Property="Template">
  82. <Setter.Value>
  83. <ControlTemplate TargetType="{x:Type ToggleButton}">
  84. <Border x:Name="templateRoot" BorderBrush="{StaticResource ComboBoxRedBorderStyle}" BorderThickness="{TemplateBinding BorderThickness}" Background="{StaticResource ComboBoxRedStyle}" SnapsToDevicePixels="true">
  85. <Border x:Name="splitBorder" BorderBrush="Transparent" BorderThickness="1" HorizontalAlignment="Right" Margin="0" SnapsToDevicePixels="true" Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}">
  86. <Path x:Name="arrow" Data="F1 M 0,0 L 2.667,2.66665 L 5.3334,0 L 5.3334,-1.78168 L 2.6667,0.88501 L0,-1.78168 L0,0 Z" Fill="{StaticResource ComboBox.Static.Glyph}" HorizontalAlignment="Center" Margin="0" VerticalAlignment="Center"/>
  87. </Border>
  88. </Border>
  89. <ControlTemplate.Triggers>
  90. <MultiDataTrigger>
  91. <MultiDataTrigger.Conditions>
  92. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
  93. <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="false"/>
  94. <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="false"/>
  95. <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="true"/>
  96. </MultiDataTrigger.Conditions>
  97. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Static.Editable.Background}"/>
  98. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Static.Editable.Border}"/>
  99. <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Static.Editable.Button.Background}"/>
  100. <Setter Property="BorderBrush" TargetName="splitBorder" Value="{StaticResource ComboBox.Static.Editable.Button.Border}"/>
  101. </MultiDataTrigger>
  102. <Trigger Property="IsMouseOver" Value="true">
  103. <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.MouseOver.Glyph}"/>
  104. </Trigger>
  105. <MultiDataTrigger>
  106. <MultiDataTrigger.Conditions>
  107. <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
  108. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
  109. </MultiDataTrigger.Conditions>
  110. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBoxRedStyle}"/>
  111. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Border}"/>
  112. </MultiDataTrigger>
  113. <MultiDataTrigger>
  114. <MultiDataTrigger.Conditions>
  115. <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
  116. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
  117. </MultiDataTrigger.Conditions>
  118. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Editable.Background}"/>
  119. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Editable.Border}"/>
  120. <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.MouseOver.Editable.Button.Background}"/>
  121. <Setter Property="BorderBrush" TargetName="splitBorder" Value="{StaticResource ComboBox.MouseOver.Editable.Button.Border}"/>
  122. </MultiDataTrigger>
  123. <Trigger Property="IsPressed" Value="true">
  124. <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.Pressed.Glyph}"/>
  125. </Trigger>
  126. <MultiDataTrigger>
  127. <MultiDataTrigger.Conditions>
  128. <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true"/>
  129. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
  130. </MultiDataTrigger.Conditions>
  131. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Background}"/>
  132. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Border}"/>
  133. </MultiDataTrigger>
  134. <MultiDataTrigger>
  135. <MultiDataTrigger.Conditions>
  136. <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true"/>
  137. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
  138. </MultiDataTrigger.Conditions>
  139. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Editable.Background}"/>
  140. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Editable.Border}"/>
  141. <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Pressed.Editable.Button.Background}"/>
  142. <Setter Property="BorderBrush" TargetName="splitBorder" Value="{StaticResource ComboBox.Pressed.Editable.Button.Border}"/>
  143. </MultiDataTrigger>
  144. <Trigger Property="IsEnabled" Value="false">
  145. <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.Disabled.Glyph}"/>
  146. </Trigger>
  147. <MultiDataTrigger>
  148. <MultiDataTrigger.Conditions>
  149. <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
  150. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
  151. </MultiDataTrigger.Conditions>
  152. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Background}"/>
  153. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Border}"/>
  154. </MultiDataTrigger>
  155. <MultiDataTrigger>
  156. <MultiDataTrigger.Conditions>
  157. <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
  158. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
  159. </MultiDataTrigger.Conditions>
  160. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Editable.Background}"/>
  161. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Editable.Border}"/>
  162. <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Disabled.Editable.Button.Background}"/>
  163. <Setter Property="BorderBrush" TargetName="splitBorder" Value="{StaticResource ComboBox.Disabled.Editable.Button.Border}"/>
  164. </MultiDataTrigger>
  165. </ControlTemplate.Triggers>
  166. </ControlTemplate>
  167. </Setter.Value>
  168. </Setter>
  169. </Style>
  170.  
  171.  
  172. <!-- Red Template-->
  173. <ControlTemplate x:Key="ComboBoxTemplateRed" TargetType="{x:Type ComboBox}">
  174. <Grid x:Name="templateRoot" SnapsToDevicePixels="true">
  175. <Grid.ColumnDefinitions>
  176. <ColumnDefinition Width="*"/>
  177. <ColumnDefinition MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Width="0"/>
  178. </Grid.ColumnDefinitions>
  179. <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  180. <Themes:SystemDropShadowChrome x:Name="shadow" Color="Transparent" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=templateRoot}">
  181. <Border x:Name="dropDownBorder" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
  182. <ScrollViewer x:Name="DropDownScrollViewer">
  183. <Grid x:Name="grid" RenderOptions.ClearTypeHint="Enabled">
  184. <Canvas x:Name="canvas" HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
  185. <Rectangle x:Name="opaqueRect" Fill="{Binding Background, ElementName=dropDownBorder}" Height="{Binding ActualHeight, ElementName=dropDownBorder}" Width="{Binding ActualWidth, ElementName=dropDownBorder}"/>
  186. </Canvas>
  187. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
  188. </Grid>
  189. </ScrollViewer>
  190. </Border>
  191. </Themes:SystemDropShadowChrome>
  192. </Popup>
  193. <ToggleButton x:Name="toggleButton" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxToggleButtonRed}"/>
  194. <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
  195. </Grid>
  196. <ControlTemplate.Triggers>
  197. <Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="true">
  198. <Setter Property="Margin" TargetName="shadow" Value="0,0,5,5"/>
  199. <Setter Property="Color" TargetName="shadow" Value="#71000000"/>
  200. </Trigger>
  201. <Trigger Property="HasItems" Value="false">
  202. <Setter Property="Height" TargetName="dropDownBorder" Value="95"/>
  203. </Trigger>
  204. <MultiTrigger>
  205. <MultiTrigger.Conditions>
  206. <Condition Property="IsGrouping" Value="true"/>
  207. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false"/>
  208. </MultiTrigger.Conditions>
  209. <Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
  210. </MultiTrigger>
  211. <Trigger Property="ScrollViewer.CanContentScroll" SourceName="DropDownScrollViewer" Value="false">
  212. <Setter Property="Canvas.Top" TargetName="opaqueRect" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}"/>
  213. <Setter Property="Canvas.Left" TargetName="opaqueRect" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}"/>
  214. </Trigger>
  215. </ControlTemplate.Triggers>
  216. </ControlTemplate>
  217. <SolidColorBrush x:Key="TextBox.Static.Background" Color="#FFFFFFFF"/>
  218. <Style x:Key="ComboBoxEditableTextBox" TargetType="{x:Type TextBox}">
  219. <Setter Property="OverridesDefaultStyle" Value="true"/>
  220. <Setter Property="AllowDrop" Value="true"/>
  221. <Setter Property="MinWidth" Value="0"/>
  222. <Setter Property="MinHeight" Value="0"/>
  223. <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
  224. <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/>
  225. <Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
  226. <Setter Property="Template">
  227. <Setter.Value>
  228. <ControlTemplate TargetType="{x:Type TextBox}">
  229. <ScrollViewer x:Name="PART_ContentHost" Background="Transparent" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
  230. </ControlTemplate>
  231. </Setter.Value>
  232. </Setter>
  233. </Style>
  234.  
  235.  
  236. <!-- Red Editable Template-->
  237. <ControlTemplate x:Key="ComboBoxEditableTemplateRed" TargetType="{x:Type ComboBox}">
  238. <Grid x:Name="templateRoot" SnapsToDevicePixels="true">
  239. <Grid.ColumnDefinitions>
  240. <ColumnDefinition Width="*"/>
  241. <ColumnDefinition MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Width="0"/>
  242. </Grid.ColumnDefinitions>
  243. <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  244. <Themes:SystemDropShadowChrome x:Name="shadow" Color="Transparent" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=templateRoot}">
  245. <Border x:Name="dropDownBorder" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
  246. <ScrollViewer x:Name="DropDownScrollViewer">
  247. <Grid x:Name="grid" RenderOptions.ClearTypeHint="Enabled">
  248. <Canvas x:Name="canvas" HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
  249. <Rectangle x:Name="opaqueRect" Fill="{Binding Background, ElementName=dropDownBorder}" Height="{Binding ActualHeight, ElementName=dropDownBorder}" Width="{Binding ActualWidth, ElementName=dropDownBorder}"/>
  250. </Canvas>
  251. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
  252. </Grid>
  253. </ScrollViewer>
  254. </Border>
  255. </Themes:SystemDropShadowChrome>
  256. </Popup>
  257. <ToggleButton x:Name="toggleButton" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxToggleButtonRed}"/>
  258. <Border x:Name="border" Background="{StaticResource TextBox.Static.Background}" Margin="{TemplateBinding BorderThickness}">
  259. <TextBox x:Name="PART_EditableTextBox" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Margin="{TemplateBinding Padding}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
  260. </Border>
  261. </Grid>
  262. <ControlTemplate.Triggers>
  263. <Trigger Property="IsEnabled" Value="false">
  264. <Setter Property="Opacity" TargetName="border" Value="0.56"/>
  265. </Trigger>
  266. <Trigger Property="IsKeyboardFocusWithin" Value="true">
  267. <Setter Property="Foreground" Value="Black"/>
  268. </Trigger>
  269. <Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="true">
  270. <Setter Property="Margin" TargetName="shadow" Value="0,0,5,5"/>
  271. <Setter Property="Color" TargetName="shadow" Value="#71000000"/>
  272. </Trigger>
  273. <Trigger Property="HasItems" Value="false">
  274. <Setter Property="Height" TargetName="dropDownBorder" Value="95"/>
  275. </Trigger>
  276. <MultiTrigger>
  277. <MultiTrigger.Conditions>
  278. <Condition Property="IsGrouping" Value="true"/>
  279. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false"/>
  280. </MultiTrigger.Conditions>
  281. <Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
  282. </MultiTrigger>
  283. <Trigger Property="ScrollViewer.CanContentScroll" SourceName="DropDownScrollViewer" Value="false">
  284. <Setter Property="Canvas.Top" TargetName="opaqueRect" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}"/>
  285. <Setter Property="Canvas.Left" TargetName="opaqueRect" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}"/>
  286. </Trigger>
  287. </ControlTemplate.Triggers>
  288. </ControlTemplate>
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295. <!-- Blue Toggle Button -->
  296. <Style x:Key="ComboBoxToggleButtonBlue" TargetType="{x:Type ToggleButton}">
  297. <Setter Property="OverridesDefaultStyle" Value="true"/>
  298. <Setter Property="IsTabStop" Value="false"/>
  299. <Setter Property="Focusable" Value="false"/>
  300. <Setter Property="ClickMode" Value="Press"/>
  301. <Setter Property="Template">
  302. <Setter.Value>
  303. <ControlTemplate TargetType="{x:Type ToggleButton}">
  304. <Border x:Name="templateRoot" BorderBrush="{StaticResource ComboBoxBlueBorderStyle}" BorderThickness="{TemplateBinding BorderThickness}" Background="{StaticResource ComboBoxBlueStyle}" SnapsToDevicePixels="true">
  305. <Border x:Name="splitBorder" BorderBrush="Transparent" BorderThickness="1" HorizontalAlignment="Right" Margin="0" SnapsToDevicePixels="true" Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}">
  306. <Path x:Name="arrow" Data="F1 M 0,0 L 2.667,2.66665 L 5.3334,0 L 5.3334,-1.78168 L 2.6667,0.88501 L0,-1.78168 L0,0 Z" Fill="{StaticResource ComboBox.Static.Glyph}" HorizontalAlignment="Center" Margin="0" VerticalAlignment="Center"/>
  307. </Border>
  308. </Border>
  309. <ControlTemplate.Triggers>
  310. <MultiDataTrigger>
  311. <MultiDataTrigger.Conditions>
  312. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
  313. <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="false"/>
  314. <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="false"/>
  315. <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="true"/>
  316. </MultiDataTrigger.Conditions>
  317. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Static.Editable.Background}"/>
  318. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Static.Editable.Border}"/>
  319. <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Static.Editable.Button.Background}"/>
  320. <Setter Property="BorderBrush" TargetName="splitBorder" Value="{StaticResource ComboBox.Static.Editable.Button.Border}"/>
  321. </MultiDataTrigger>
  322. <Trigger Property="IsMouseOver" Value="true">
  323. <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.MouseOver.Glyph}"/>
  324. </Trigger>
  325. <MultiDataTrigger>
  326. <MultiDataTrigger.Conditions>
  327. <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
  328. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
  329. </MultiDataTrigger.Conditions>
  330. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBoxBlueStyle}"/>
  331. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Border}"/>
  332. </MultiDataTrigger>
  333. <MultiDataTrigger>
  334. <MultiDataTrigger.Conditions>
  335. <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
  336. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
  337. </MultiDataTrigger.Conditions>
  338. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Editable.Background}"/>
  339. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Editable.Border}"/>
  340. <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.MouseOver.Editable.Button.Background}"/>
  341. <Setter Property="BorderBrush" TargetName="splitBorder" Value="{StaticResource ComboBox.MouseOver.Editable.Button.Border}"/>
  342. </MultiDataTrigger>
  343. <Trigger Property="IsPressed" Value="true">
  344. <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.Pressed.Glyph}"/>
  345. </Trigger>
  346. <MultiDataTrigger>
  347. <MultiDataTrigger.Conditions>
  348. <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true"/>
  349. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
  350. </MultiDataTrigger.Conditions>
  351. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Background}"/>
  352. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Border}"/>
  353. </MultiDataTrigger>
  354. <MultiDataTrigger>
  355. <MultiDataTrigger.Conditions>
  356. <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true"/>
  357. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
  358. </MultiDataTrigger.Conditions>
  359. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Editable.Background}"/>
  360. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Editable.Border}"/>
  361. <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Pressed.Editable.Button.Background}"/>
  362. <Setter Property="BorderBrush" TargetName="splitBorder" Value="{StaticResource ComboBox.Pressed.Editable.Button.Border}"/>
  363. </MultiDataTrigger>
  364. <Trigger Property="IsEnabled" Value="false">
  365. <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.Disabled.Glyph}"/>
  366. </Trigger>
  367. <MultiDataTrigger>
  368. <MultiDataTrigger.Conditions>
  369. <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
  370. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
  371. </MultiDataTrigger.Conditions>
  372. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Background}"/>
  373. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Border}"/>
  374. </MultiDataTrigger>
  375. <MultiDataTrigger>
  376. <MultiDataTrigger.Conditions>
  377. <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
  378. <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
  379. </MultiDataTrigger.Conditions>
  380. <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Editable.Background}"/>
  381. <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Editable.Border}"/>
  382. <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Disabled.Editable.Button.Background}"/>
  383. <Setter Property="BorderBrush" TargetName="splitBorder" Value="{StaticResource ComboBox.Disabled.Editable.Button.Border}"/>
  384. </MultiDataTrigger>
  385. </ControlTemplate.Triggers>
  386. </ControlTemplate>
  387. </Setter.Value>
  388. </Setter>
  389. </Style>
  390.  
  391.  
  392. <!-- Blue Template -->
  393. <ControlTemplate x:Key="ComboBoxTemplateBlue" TargetType="{x:Type ComboBox}">
  394. <Grid x:Name="templateRoot" SnapsToDevicePixels="true">
  395. <Grid.ColumnDefinitions>
  396. <ColumnDefinition Width="*"/>
  397. <ColumnDefinition MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Width="0"/>
  398. </Grid.ColumnDefinitions>
  399. <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  400. <Themes:SystemDropShadowChrome x:Name="shadow" Color="Transparent" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=templateRoot}">
  401. <Border x:Name="dropDownBorder" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
  402. <ScrollViewer x:Name="DropDownScrollViewer">
  403. <Grid x:Name="grid" RenderOptions.ClearTypeHint="Enabled">
  404. <Canvas x:Name="canvas" HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
  405. <Rectangle x:Name="opaqueRect" Fill="{Binding Background, ElementName=dropDownBorder}" Height="{Binding ActualHeight, ElementName=dropDownBorder}" Width="{Binding ActualWidth, ElementName=dropDownBorder}"/>
  406. </Canvas>
  407. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
  408. </Grid>
  409. </ScrollViewer>
  410. </Border>
  411. </Themes:SystemDropShadowChrome>
  412. </Popup>
  413. <ToggleButton x:Name="toggleButton" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxToggleButtonBlue}"/>
  414. <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
  415. </Grid>
  416. <ControlTemplate.Triggers>
  417. <Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="true">
  418. <Setter Property="Margin" TargetName="shadow" Value="0,0,5,5"/>
  419. <Setter Property="Color" TargetName="shadow" Value="#71000000"/>
  420. </Trigger>
  421. <Trigger Property="HasItems" Value="false">
  422. <Setter Property="Height" TargetName="dropDownBorder" Value="95"/>
  423. </Trigger>
  424. <MultiTrigger>
  425. <MultiTrigger.Conditions>
  426. <Condition Property="IsGrouping" Value="true"/>
  427. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false"/>
  428. </MultiTrigger.Conditions>
  429. <Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
  430. </MultiTrigger>
  431. <Trigger Property="ScrollViewer.CanContentScroll" SourceName="DropDownScrollViewer" Value="false">
  432. <Setter Property="Canvas.Top" TargetName="opaqueRect" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}"/>
  433. <Setter Property="Canvas.Left" TargetName="opaqueRect" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}"/>
  434. </Trigger>
  435. </ControlTemplate.Triggers>
  436. </ControlTemplate>
  437. <SolidColorBrush x:Key="TextBoxBlue.Static.Background" Color="#FFFFFFFF"/>
  438. <Style x:Key="ComboBoxEditableTextBoxBlue" TargetType="{x:Type TextBox}">
  439. <Setter Property="OverridesDefaultStyle" Value="true"/>
  440. <Setter Property="AllowDrop" Value="true"/>
  441. <Setter Property="MinWidth" Value="0"/>
  442. <Setter Property="MinHeight" Value="0"/>
  443. <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
  444. <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/>
  445. <Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
  446. <Setter Property="Template">
  447. <Setter.Value>
  448. <ControlTemplate TargetType="{x:Type TextBox}">
  449. <ScrollViewer x:Name="PART_ContentHost" Background="Transparent" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
  450. </ControlTemplate>
  451. </Setter.Value>
  452. </Setter>
  453. </Style>
  454.  
  455.  
  456. <!-- Blue Editable Template-->
  457. <ControlTemplate x:Key="ComboBoxEditableTemplateBlue" TargetType="{x:Type ComboBox}">
  458. <Grid x:Name="templateRoot" SnapsToDevicePixels="true">
  459. <Grid.ColumnDefinitions>
  460. <ColumnDefinition Width="*"/>
  461. <ColumnDefinition MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Width="0"/>
  462. </Grid.ColumnDefinitions>
  463. <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  464. <Themes:SystemDropShadowChrome x:Name="shadow" Color="Transparent" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=templateRoot}">
  465. <Border x:Name="dropDownBorder" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
  466. <ScrollViewer x:Name="DropDownScrollViewer">
  467. <Grid x:Name="grid" RenderOptions.ClearTypeHint="Enabled">
  468. <Canvas x:Name="canvas" HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
  469. <Rectangle x:Name="opaqueRect" Fill="{Binding Background, ElementName=dropDownBorder}" Height="{Binding ActualHeight, ElementName=dropDownBorder}" Width="{Binding ActualWidth, ElementName=dropDownBorder}"/>
  470. </Canvas>
  471. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
  472. </Grid>
  473. </ScrollViewer>
  474. </Border>
  475. </Themes:SystemDropShadowChrome>
  476. </Popup>
  477. <ToggleButton x:Name="toggleButton" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxToggleButtonBlue}"/>
  478. <Border x:Name="border" Background="{StaticResource TextBox.Static.Background}" Margin="{TemplateBinding BorderThickness}">
  479. <TextBox x:Name="PART_EditableTextBox" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Margin="{TemplateBinding Padding}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
  480. </Border>
  481. </Grid>
  482. <ControlTemplate.Triggers>
  483. <Trigger Property="IsEnabled" Value="false">
  484. <Setter Property="Opacity" TargetName="border" Value="0.56"/>
  485. </Trigger>
  486. <Trigger Property="IsKeyboardFocusWithin" Value="true">
  487. <Setter Property="Foreground" Value="Black"/>
  488. </Trigger>
  489. <Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="true">
  490. <Setter Property="Margin" TargetName="shadow" Value="0,0,5,5"/>
  491. <Setter Property="Color" TargetName="shadow" Value="#71000000"/>
  492. </Trigger>
  493. <Trigger Property="HasItems" Value="false">
  494. <Setter Property="Height" TargetName="dropDownBorder" Value="95"/>
  495. </Trigger>
  496. <MultiTrigger>
  497. <MultiTrigger.Conditions>
  498. <Condition Property="IsGrouping" Value="true"/>
  499. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false"/>
  500. </MultiTrigger.Conditions>
  501. <Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
  502. </MultiTrigger>
  503. <Trigger Property="ScrollViewer.CanContentScroll" SourceName="DropDownScrollViewer" Value="false">
  504. <Setter Property="Canvas.Top" TargetName="opaqueRect" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}"/>
  505. <Setter Property="Canvas.Left" TargetName="opaqueRect" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}"/>
  506. </Trigger>
  507. </ControlTemplate.Triggers>
  508. </ControlTemplate>
  509.  
  510.  
  511.  
  512. <!-- Red Style-->
  513. <Style x:Key="ComboBoxRed" TargetType="{x:Type ComboBox}">
  514. <Setter Property="Template" Value="{StaticResource ComboBoxTemplateRed}"/>
  515. <Style.Triggers>
  516. <Trigger Property="IsEditable" Value="true">
  517. <Setter Property="IsTabStop" Value="false"/>
  518. <Setter Property="Padding" Value="2"/>
  519. <Setter Property="Template" Value="{StaticResource ComboBoxEditableTemplateRed}"/>
  520. </Trigger>
  521. </Style.Triggers>
  522. </Style>
  523.  
  524.  
  525. <!-- Blue Style-->
  526. <Style x:Key="ComboBoxBlue" TargetType="{x:Type ComboBox}">
  527. <Setter Property="Template" Value="{StaticResource ComboBoxTemplateBlue}"/>
  528. <Style.Triggers>
  529. <Trigger Property="IsEditable" Value="true">
  530. <Setter Property="IsTabStop" Value="false"/>
  531. <Setter Property="Padding" Value="2"/>
  532. <Setter Property="Template" Value="{StaticResource ComboBoxEditableTemplateBlue}"/>
  533. </Trigger>
  534. </Style.Triggers>
  535. </Style>
  536.  
  537. </ResourceDictionary>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement