ComboBoxStyle.xaml 65 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100
  1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic"
  4. xmlns:resource="clr-namespace:Muchinfo.MTPClient.Resources;assembly=Client.Resources">
  5. <BorderGapMaskConverter x:Key="BorderGapMaskConverter" />
  6. <Style x:Key="SimpleScrollViewer"
  7. BasedOn="{x:Null}"
  8. TargetType="{x:Type ScrollViewer}">
  9. <Setter Property="Template">
  10. <Setter.Value>
  11. <ControlTemplate TargetType="{x:Type ScrollViewer}">
  12. <Grid Background="{TemplateBinding Background}">
  13. <Grid.ColumnDefinitions>
  14. <ColumnDefinition Width="*" />
  15. <ColumnDefinition Width="Auto" />
  16. </Grid.ColumnDefinitions>
  17. <Grid.RowDefinitions>
  18. <RowDefinition Height="*" />
  19. <RowDefinition Height="Auto" />
  20. </Grid.RowDefinitions>
  21. <ScrollContentPresenter Grid.Row="0"
  22. Grid.Column="0"
  23. Margin="{TemplateBinding Padding}"
  24. CanContentScroll="{TemplateBinding CanContentScroll}"
  25. Content="{TemplateBinding Content}"
  26. ContentTemplate="{TemplateBinding ContentTemplate}" />
  27. <!-- ScrollBars 的可见性通过控件的实现来控制 -->
  28. <ScrollBar x:Name="PART_HorizontalScrollBar"
  29. Grid.Row="1"
  30. Grid.Column="0"
  31. Maximum="{TemplateBinding ScrollableWidth}"
  32. Minimum="0"
  33. Orientation="Horizontal"
  34. Style="{DynamicResource SimpleScrollBar}"
  35. ViewportSize="{TemplateBinding ViewportWidth}"
  36. Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
  37. Value="{Binding HorizontalOffset,
  38. Mode=OneWay,
  39. RelativeSource={RelativeSource TemplatedParent}}" />
  40. <ScrollBar x:Name="PART_VerticalScrollBar"
  41. Grid.Row="0"
  42. Grid.Column="1"
  43. Maximum="{TemplateBinding ScrollableHeight}"
  44. Minimum="0"
  45. Orientation="Vertical"
  46. Style="{DynamicResource SimpleScrollBar}"
  47. ViewportSize="{TemplateBinding ViewportHeight}"
  48. Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
  49. Value="{Binding VerticalOffset,
  50. Mode=OneWay,
  51. RelativeSource={RelativeSource TemplatedParent}}" />
  52. </Grid>
  53. </ControlTemplate>
  54. </Setter.Value>
  55. </Setter>
  56. </Style>
  57. <ControlTemplate x:Key="ComboBoxTextBox" TargetType="{x:Type TextBox}">
  58. <!-- 必须将其命名为 PART_ContentHost -->
  59. <Border x:Name="PART_ContentHost"
  60. Background="{TemplateBinding Background}"
  61. Focusable="False" />
  62. </ControlTemplate>
  63. <Style x:Key="ArrowComboBoxToggleButton"
  64. BasedOn="{x:Null}"
  65. TargetType="{x:Type ToggleButton}">
  66. <Setter Property="Background" Value="{DynamicResource ContentBackground}" />
  67. <Setter Property="BorderBrush" Value="{DynamicResource CommonBorderBrush}" />
  68. <Setter Property="BorderThickness" Value="1" />
  69. <Setter Property="Template">
  70. <Setter.Value>
  71. <ControlTemplate TargetType="{x:Type ToggleButton}">
  72. <Border Background="{TemplateBinding Background}"
  73. BorderBrush="{TemplateBinding BorderBrush}"
  74. BorderThickness="{TemplateBinding BorderThickness}">
  75. <Grid>
  76. <Grid.ColumnDefinitions>
  77. <ColumnDefinition />
  78. <ColumnDefinition Width="20" />
  79. </Grid.ColumnDefinitions>
  80. <Path x:Name="Rectangle"
  81. Grid.Column="1"
  82. Width="20"
  83. Data="F1M4,2C4,2 148,2 148,2 149.105,2 150,2.895 150,4 150,4 150,22 150,22 150,23.105 149.105,24 148,24 148,24 4,24 4,24 2.895,24 2,23.105 2,22 2,22 2,4 2,4 2,2.895 2.895,2 4,2z"
  84. Fill="{DynamicResource ContentBackground}"
  85. Stretch="Fill" />
  86. <Border Grid.Column="1"
  87. BorderBrush="{TemplateBinding BorderBrush}"
  88. BorderThickness="{TemplateBinding BorderThickness}">
  89. <Path x:Name="Arrow"
  90. Width="11"
  91. Height="7"
  92. Data="F1M5.5,5.999C5.5,5.999 1.001,1 1.001,1 1.001,1 9.999,1 9.999,1 9.999,1 5.5,5.999 5.5,5.999"
  93. Fill="#FF7A7A7A"
  94. Stroke="{TemplateBinding BorderBrush}" />
  95. </Border>
  96. </Grid>
  97. </Border>
  98. <ControlTemplate.Triggers>
  99. <Trigger Property="IsChecked" Value="true">
  100. <Setter TargetName="Rectangle" Property="Fill" Value="{DynamicResource SelectedBackBrush}" />
  101. </Trigger>
  102. <Trigger Property="IsMouseOver" Value="true">
  103. <Setter TargetName="Rectangle" Property="Fill" Value="{DynamicResource SelectedBackBrush}" />
  104. </Trigger>
  105. <Trigger Property="IsEnabled" Value="False">
  106. <!--
  107. <Setter TargetName="Rectangle" Property="Fill" Value="#FF7A7A7A" />
  108. <Setter TargetName="Rectangle" Property="Stroke" Value="#FF7A7A7A" />
  109. -->
  110. </Trigger>
  111. </ControlTemplate.Triggers>
  112. </ControlTemplate>
  113. </Setter.Value>
  114. </Setter>
  115. </Style>
  116. <!-- Simple ComboBoxItem - 它用于 ComboBox 中的每个项。可以更改下面每个项的选定颜色 -->
  117. <Style x:Key="SimpleComboBoxItem" TargetType="{x:Type ComboBoxItem}">
  118. <Setter Property="SnapsToDevicePixels" Value="true" />
  119. <Setter Property="Template">
  120. <Setter.Value>
  121. <ControlTemplate TargetType="{x:Type ComboBoxItem}">
  122. <Grid SnapsToDevicePixels="true">
  123. <Border x:Name="Border"
  124. Background="{TemplateBinding Background}"
  125. BorderBrush="{TemplateBinding BorderBrush}"
  126. BorderThickness="{TemplateBinding BorderThickness}" />
  127. <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
  128. </Grid>
  129. <ControlTemplate.Triggers>
  130. <!-- 更改 IsHighlighted SelectedBackgroundBrush,以设置各项的选择颜色 -->
  131. <Trigger Property="IsHighlighted" Value="true">
  132. <Setter TargetName="Border" Property="Background" Value="{DynamicResource SelectedBackgroundBrush}" />
  133. </Trigger>
  134. <Trigger Property="IsEnabled" Value="false">
  135. <Setter Property="Foreground" Value="{DynamicResource DisabledForegroundBrush}" />
  136. </Trigger>
  137. </ControlTemplate.Triggers>
  138. </ControlTemplate>
  139. </Setter.Value>
  140. </Setter>
  141. </Style>
  142. <!--
  143. Simple ComboBox
  144. 它使用 ComboBoxToggleButton 来展开和折叠 Popup 控件
  145. 使用 SimpleScrollViewer 可使项滚动,而使用 SimpleComboBoxItem 可定义每个项的外观
  146. Popup 显示了 StackPanel 中的项的列表
  147. -->
  148. <Style x:Key="FocusVisual">
  149. <Setter Property="Control.Template">
  150. <Setter.Value>
  151. <ControlTemplate>
  152. <Border>
  153. <Rectangle Margin="2"
  154. SnapsToDevicePixels="true"
  155. Stroke="{DynamicResource FocusVisualBrush}"
  156. StrokeThickness="1" />
  157. </Border>
  158. </ControlTemplate>
  159. </Setter.Value>
  160. </Setter>
  161. </Style>
  162. <Style x:Key="SimpleComboBoxStyle" TargetType="{x:Type ComboBox}">
  163. <Setter Property="Height" Value="24" />
  164. <Setter Property="Foreground" Value="{DynamicResource ContentForeGround}" />
  165. <Setter Property="BorderThickness" Value="1" />
  166. <Setter Property="BorderBrush" Value="{DynamicResource CommonBorderBrush}" />
  167. <Setter Property="SnapsToDevicePixels" Value="true" />
  168. <Setter Property="FocusVisualStyle" Value="{DynamicResource FocusVisual}" />
  169. <Setter Property="Template">
  170. <Setter.Value>
  171. <ControlTemplate TargetType="{x:Type ComboBox}">
  172. <Grid>
  173. <Rectangle Name="OutSideBorder"
  174. HorizontalAlignment="Stretch"
  175. VerticalAlignment="Stretch"
  176. SnapsToDevicePixels="true"
  177. Stroke="{DynamicResource FocusVisualBrush}"
  178. StrokeDashArray="1,2"
  179. StrokeThickness="1"
  180. Visibility="Collapsed" />
  181. <Border Margin="1"
  182. Background="{TemplateBinding Background}"
  183. BorderBrush="{TemplateBinding BorderBrush}"
  184. BorderThickness="{TemplateBinding BorderThickness}"
  185. CornerRadius="2">
  186. <Grid>
  187. <Grid.ColumnDefinitions>
  188. <ColumnDefinition />
  189. <ColumnDefinition Width="20" />
  190. </Grid.ColumnDefinitions>
  191. <!-- ToggleButton 已数据绑定到 ComboBox 本身以切换 IsDropDownOpen -->
  192. <ToggleButton x:Name="ToggleButton"
  193. Grid.Column="0"
  194. Grid.ColumnSpan="2"
  195. Background="{TemplateBinding Background}"
  196. BorderBrush="{TemplateBinding BorderBrush}"
  197. BorderThickness="1,0,0,0"
  198. ClickMode="Press"
  199. Focusable="false"
  200. IsChecked="{Binding IsDropDownOpen,
  201. Mode=TwoWay,
  202. RelativeSource={RelativeSource TemplatedParent}}"
  203. Style="{DynamicResource ArrowComboBoxToggleButton}" />
  204. <ContentPresenter x:Name="ContentSite"
  205. Margin="3,0,3,0"
  206. HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
  207. VerticalAlignment="Center"
  208. Content="{TemplateBinding SelectionBoxItem}"
  209. ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
  210. ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
  211. IsHitTestVisible="False" />
  212. <Rectangle x:Name="enableRectangle"
  213. Grid.ColumnSpan="2"
  214. Fill="{DynamicResource DisEnableBrush}"
  215. Opacity="0.7"
  216. Visibility="Collapsed" />
  217. <!-- 必须将 TextBox 命名为 PART_EditableTextBox,否则 ComboBox 将无法识别它 -->
  218. <TextBox x:Name="PART_EditableTextBox"
  219. Margin="3"
  220. VerticalAlignment="Stretch"
  221. Background="Transparent"
  222. BorderThickness="0"
  223. Focusable="True"
  224. IsReadOnly="{TemplateBinding IsReadOnly}"
  225. Visibility="Hidden" />
  226. <!-- Popup 可显示 ComboBox 中的项列表。IsOpen 已数据绑定到通过 ComboBoxToggleButton 来切换的 IsDropDownOpen -->
  227. <Popup x:Name="Popup"
  228. AllowsTransparency="True"
  229. Focusable="False"
  230. IsOpen="{TemplateBinding IsDropDownOpen}"
  231. Placement="Bottom"
  232. PopupAnimation="Fade">
  233. <Grid x:Name="DropDown"
  234. MinWidth="{TemplateBinding ActualWidth}"
  235. MaxHeight="{TemplateBinding MaxDropDownHeight}"
  236. SnapsToDevicePixels="True">
  237. <Border x:Name="DropDownBorder"
  238. Background="{TemplateBinding Background}"
  239. BorderBrush="{TemplateBinding BorderBrush}"
  240. BorderThickness="1" />
  241. <ScrollViewer Margin="4,2,4,6"
  242. CanContentScroll="True"
  243. HorizontalScrollBarVisibility="Auto"
  244. SnapsToDevicePixels="True"
  245. Style="{DynamicResource SimpleScrollViewer}"
  246. VerticalScrollBarVisibility="Auto">
  247. <!-- StackPanel 用于显示子级,方法是将 IsItemsHost 设置为 True -->
  248. <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
  249. </ScrollViewer>
  250. </Grid>
  251. </Popup>
  252. </Grid>
  253. </Border>
  254. </Grid>
  255. <ControlTemplate.Triggers>
  256. <!-- 这会强制 DropDown 的大小有最小限制(如果它为空) -->
  257. <Trigger Property="HasItems" Value="false">
  258. <Setter TargetName="DropDownBorder" Property="MinHeight" Value="95" />
  259. </Trigger>
  260. <Trigger Property="IsEnabled" Value="false">
  261. <Setter TargetName="enableRectangle" Property="Visibility" Value="Visible" />
  262. </Trigger>
  263. <Trigger Property="IsGrouping" Value="true">
  264. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  265. </Trigger>
  266. <Trigger SourceName="Popup" Property="AllowsTransparency" Value="true">
  267. <Setter TargetName="DropDownBorder" Property="CornerRadius" Value="4" />
  268. <Setter TargetName="DropDownBorder" Property="Margin" Value="0,2,0,0" />
  269. </Trigger>
  270. <Trigger Property="IsEditable" Value="true">
  271. <Setter TargetName="PART_EditableTextBox" Property="Visibility" Value="Visible" />
  272. <Setter TargetName="ContentSite" Property="Visibility" Value="Hidden" />
  273. </Trigger>
  274. <Trigger Property="IsFocused" Value="true">
  275. <Setter TargetName="OutSideBorder" Property="Visibility" Value="Visible" />
  276. </Trigger>
  277. </ControlTemplate.Triggers>
  278. </ControlTemplate>
  279. </Setter.Value>
  280. </Setter>
  281. </Style>
  282. <Style x:Key="QuoteChartComboBoxStyle" TargetType="{x:Type ComboBox}">
  283. <Setter Property="Height" Value="24" />
  284. <Setter Property="Foreground" Value="{DynamicResource MainForegroundBrush}" />
  285. <Setter Property="BorderThickness" Value="0" />
  286. <Setter Property="Background" Value="Transparent" />
  287. <Setter Property="BorderBrush" Value="{DynamicResource CommonBorderBrush}" />
  288. <Setter Property="SnapsToDevicePixels" Value="true" />
  289. <Setter Property="Template">
  290. <Setter.Value>
  291. <ControlTemplate TargetType="{x:Type ComboBox}">
  292. <Border Background="{TemplateBinding Background}"
  293. BorderBrush="{TemplateBinding BorderBrush}"
  294. BorderThickness="{TemplateBinding BorderThickness}"
  295. CornerRadius="2">
  296. <Grid>
  297. <Grid.ColumnDefinitions>
  298. <ColumnDefinition Width="20" />
  299. <ColumnDefinition />
  300. <ColumnDefinition Width="20" />
  301. </Grid.ColumnDefinitions>
  302. <!-- ToggleButton 已数据绑定到 ComboBox 本身以切换 IsDropDownOpen -->
  303. <ToggleButton Background="{TemplateBinding Background}"
  304. BorderBrush="{TemplateBinding BorderBrush}"
  305. BorderThickness="1"
  306. ClickMode="Press"
  307. Focusable="false">
  308. <Path Margin="{TemplateBinding Padding}"
  309. Data="M8.5,5.75 L15.5,15.5 0.5,15.5 z"
  310. Fill="{TemplateBinding Foreground}"
  311. RenderTransformOrigin="0.5,0.5"
  312. Stretch="Uniform">
  313. <Path.RenderTransform>
  314. <TransformGroup>
  315. <ScaleTransform />
  316. <SkewTransform />
  317. <RotateTransform Angle="-90" />
  318. <TranslateTransform />
  319. </TransformGroup>
  320. </Path.RenderTransform>
  321. </Path>
  322. </ToggleButton>
  323. <ToggleButton x:Name="ToggleButton"
  324. Grid.Column="1"
  325. Background="{TemplateBinding Background}"
  326. BorderBrush="{TemplateBinding BorderBrush}"
  327. BorderThickness="1,0,0,0"
  328. ClickMode="Press"
  329. Focusable="false"
  330. IsChecked="{Binding IsDropDownOpen,
  331. Mode=TwoWay,
  332. RelativeSource={RelativeSource TemplatedParent}}" />
  333. <ContentPresenter x:Name="ContentSite"
  334. Grid.Column="1"
  335. Margin="3,0,3,0"
  336. VerticalAlignment="Center"
  337. Content="{TemplateBinding SelectionBoxItem}"
  338. ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
  339. ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
  340. IsHitTestVisible="False" />
  341. <ToggleButton Grid.Column="2"
  342. Background="{TemplateBinding Background}"
  343. BorderBrush="{TemplateBinding BorderBrush}"
  344. BorderThickness="1"
  345. ClickMode="Press"
  346. Focusable="false">
  347. <Path Margin="{TemplateBinding Padding}"
  348. Data="M8.5,5.75 L15.5,15.5 0.5,15.5 z"
  349. Fill="{TemplateBinding Foreground}"
  350. RenderTransformOrigin="0.5,0.5"
  351. Stretch="Uniform">
  352. <Path.RenderTransform>
  353. <TransformGroup>
  354. <ScaleTransform />
  355. <SkewTransform />
  356. <RotateTransform Angle="90" />
  357. <TranslateTransform />
  358. </TransformGroup>
  359. </Path.RenderTransform>
  360. </Path>
  361. </ToggleButton>
  362. <Rectangle x:Name="enableRectangle"
  363. Grid.ColumnSpan="2"
  364. Fill="{DynamicResource DisEnableBrush}"
  365. Opacity="0.7"
  366. Visibility="Collapsed" />
  367. <!-- 必须将 TextBox 命名为 PART_EditableTextBox,否则 ComboBox 将无法识别它 -->
  368. <TextBox x:Name="PART_EditableTextBox"
  369. Margin="3"
  370. VerticalAlignment="Stretch"
  371. Background="Transparent"
  372. BorderThickness="0"
  373. Focusable="True"
  374. IsReadOnly="{TemplateBinding IsReadOnly}"
  375. Visibility="Hidden" />
  376. <!-- Popup 可显示 ComboBox 中的项列表。IsOpen 已数据绑定到通过 ComboBoxToggleButton 来切换的 IsDropDownOpen -->
  377. <Popup x:Name="Popup"
  378. AllowsTransparency="True"
  379. Focusable="False"
  380. IsOpen="{TemplateBinding IsDropDownOpen}"
  381. Placement="Bottom"
  382. PopupAnimation="Fade">
  383. <Grid x:Name="DropDown"
  384. MinWidth="{TemplateBinding ActualWidth}"
  385. MaxHeight="{TemplateBinding MaxDropDownHeight}"
  386. SnapsToDevicePixels="True">
  387. <Border x:Name="DropDownBorder"
  388. Background="{TemplateBinding Background}"
  389. BorderBrush="{TemplateBinding BorderBrush}"
  390. BorderThickness="1" />
  391. <ScrollViewer Margin="4,2,4,6"
  392. CanContentScroll="True"
  393. HorizontalScrollBarVisibility="Auto"
  394. SnapsToDevicePixels="True"
  395. Style="{DynamicResource SimpleScrollViewer}"
  396. VerticalScrollBarVisibility="Auto">
  397. <!-- StackPanel 用于显示子级,方法是将 IsItemsHost 设置为 True -->
  398. <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
  399. </ScrollViewer>
  400. </Grid>
  401. </Popup>
  402. </Grid>
  403. </Border>
  404. <ControlTemplate.Triggers>
  405. <!-- 这会强制 DropDown 的大小有最小限制(如果它为空) -->
  406. <Trigger Property="HasItems" Value="false">
  407. <Setter TargetName="DropDownBorder" Property="MinHeight" Value="95" />
  408. </Trigger>
  409. <Trigger Property="IsEnabled" Value="false">
  410. <Setter TargetName="enableRectangle" Property="Visibility" Value="Visible" />
  411. </Trigger>
  412. <Trigger Property="IsGrouping" Value="true">
  413. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  414. </Trigger>
  415. <Trigger SourceName="Popup" Property="AllowsTransparency" Value="true">
  416. <Setter TargetName="DropDownBorder" Property="CornerRadius" Value="4" />
  417. <Setter TargetName="DropDownBorder" Property="Margin" Value="0,2,0,0" />
  418. </Trigger>
  419. <Trigger Property="IsEditable" Value="true">
  420. <Setter Property="IsTabStop" Value="false" />
  421. <Setter TargetName="PART_EditableTextBox" Property="Visibility" Value="Visible" />
  422. <Setter TargetName="ContentSite" Property="Visibility" Value="Hidden" />
  423. </Trigger>
  424. </ControlTemplate.Triggers>
  425. </ControlTemplate>
  426. </Setter.Value>
  427. </Setter>
  428. </Style>
  429. <SolidColorBrush x:Key="TextBoxForeground" Color="#FF444444" />
  430. <Style x:Key="LoginComboBoxToggleButton"
  431. BasedOn="{x:Null}"
  432. TargetType="{x:Type ToggleButton}">
  433. <Setter Property="Template">
  434. <Setter.Value>
  435. <ControlTemplate TargetType="{x:Type ToggleButton}">
  436. <Grid>
  437. <Border x:Name="Border"
  438. Height="{TemplateBinding Height}"
  439. Margin="1"
  440. Panel.ZIndex="1"
  441. Background="{TemplateBinding Background}"
  442. BorderBrush="{TemplateBinding BorderBrush}"
  443. BorderThickness="{TemplateBinding BorderThickness}"
  444. CornerRadius="1" />
  445. <Border x:Name="MouseOverVisual"
  446. Height="{TemplateBinding Height}"
  447. Panel.ZIndex="1"
  448. BorderBrush="{DynamicResource TextBox_MouseOver}"
  449. BorderThickness="{TemplateBinding BorderThickness}"
  450. CornerRadius="1"
  451. Opacity="0" />
  452. </Grid>
  453. <ControlTemplate.Triggers>
  454. <Trigger Property="IsMouseOver" Value="True">
  455. <Setter TargetName="MouseOverVisual" Property="Opacity" Value="1" />
  456. </Trigger>
  457. </ControlTemplate.Triggers>
  458. </ControlTemplate>
  459. </Setter.Value>
  460. </Setter>
  461. </Style>
  462. <!--
  463. Simple ComboBox
  464. 它使用 ComboBoxToggleButton 来展开和折叠 Popup 控件
  465. 使用 SimpleScrollViewer 可使项滚动,而使用 SimpleComboBoxItem 可定义每个项的外观
  466. Popup 显示了 StackPanel 中的项的列表
  467. -->
  468. <Style x:Key="CycleListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
  469. <Setter Property="Background" Value="Transparent" />
  470. <Setter Property="HorizontalContentAlignment" Value="Center" />
  471. <Setter Property="VerticalContentAlignment" Value="Center" />
  472. <Setter Property="Padding" Value="5" />
  473. <Setter Property="Template">
  474. <Setter.Value>
  475. <ControlTemplate TargetType="{x:Type ListBoxItem}">
  476. <Border x:Name="Bd"
  477. Background="{TemplateBinding Background}"
  478. BorderBrush="{TemplateBinding BorderBrush}"
  479. BorderThickness="{TemplateBinding BorderThickness}"
  480. Padding="{TemplateBinding Padding}"
  481. SnapsToDevicePixels="True">
  482. <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
  483. VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
  484. Content="{TemplateBinding Content}"
  485. ContentStringFormat="{TemplateBinding ContentStringFormat}"
  486. ContentTemplate="{TemplateBinding ContentTemplate}"
  487. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  488. </Border>
  489. <ControlTemplate.Triggers>
  490. <Trigger Property="IsSelected" Value="True">
  491. <Setter TargetName="Bd" Property="Background" Value="{DynamicResource MuchinfoBrush3}" />
  492. </Trigger>
  493. <Trigger Property="IsEnabled" Value="False">
  494. <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
  495. </Trigger>
  496. </ControlTemplate.Triggers>
  497. </ControlTemplate>
  498. </Setter.Value>
  499. </Setter>
  500. </Style>
  501. <Style x:Key="CycleListBoxStyle" TargetType="{x:Type ListBox}">
  502. <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" />
  503. <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled" />
  504. <Setter Property="ScrollViewer.CanContentScroll" Value="true" />
  505. <Setter Property="ScrollViewer.PanningMode" Value="Both" />
  506. <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
  507. <Setter Property="VerticalContentAlignment" Value="Center" />
  508. <Setter Property="Template">
  509. <Setter.Value>
  510. <ControlTemplate TargetType="{x:Type ListBox}">
  511. <ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}">
  512. <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  513. </ScrollViewer>
  514. <ControlTemplate.Triggers>
  515. <MultiTrigger>
  516. <MultiTrigger.Conditions>
  517. <Condition Property="IsGrouping" Value="true" />
  518. </MultiTrigger.Conditions>
  519. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  520. </MultiTrigger>
  521. </ControlTemplate.Triggers>
  522. </ControlTemplate>
  523. </Setter.Value>
  524. </Setter>
  525. </Style>
  526. <Style x:Key="AmountListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
  527. <Setter Property="Background" Value="Transparent" />
  528. <Setter Property="HorizontalContentAlignment" Value="Center" />
  529. <Setter Property="VerticalContentAlignment" Value="Center" />
  530. <Setter Property="Padding" Value="5" />
  531. <Setter Property="Template">
  532. <Setter.Value>
  533. <ControlTemplate TargetType="{x:Type ListBoxItem}">
  534. <Border x:Name="Bd"
  535. Background="{TemplateBinding Background}"
  536. BorderBrush="{TemplateBinding BorderBrush}"
  537. BorderThickness="{TemplateBinding BorderThickness}"
  538. Padding="{TemplateBinding Padding}"
  539. SnapsToDevicePixels="True">
  540. <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
  541. VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
  542. Content="{TemplateBinding Content}"
  543. ContentStringFormat="{TemplateBinding ContentStringFormat}"
  544. ContentTemplate="{TemplateBinding ContentTemplate}"
  545. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  546. </Border>
  547. <ControlTemplate.Triggers>
  548. <Trigger Property="IsEnabled" Value="False">
  549. <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
  550. </Trigger>
  551. </ControlTemplate.Triggers>
  552. </ControlTemplate>
  553. </Setter.Value>
  554. </Setter>
  555. </Style>
  556. <Style x:Key="AmountListBoxStyle" TargetType="{x:Type ListBox}">
  557. <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" />
  558. <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled" />
  559. <Setter Property="ScrollViewer.CanContentScroll" Value="true" />
  560. <Setter Property="ScrollViewer.PanningMode" Value="Both" />
  561. <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
  562. <Setter Property="VerticalContentAlignment" Value="Center" />
  563. <Setter Property="Template">
  564. <Setter.Value>
  565. <ControlTemplate TargetType="{x:Type ListBox}">
  566. <ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}">
  567. <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  568. </ScrollViewer>
  569. <ControlTemplate.Triggers>
  570. <MultiTrigger>
  571. <MultiTrigger.Conditions>
  572. <Condition Property="IsGrouping" Value="true" />
  573. </MultiTrigger.Conditions>
  574. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  575. </MultiTrigger>
  576. </ControlTemplate.Triggers>
  577. </ControlTemplate>
  578. </Setter.Value>
  579. </Setter>
  580. </Style>
  581. <!-- 新图表周期 -->
  582. <Style x:Key="ChartCycleListBoxStyle" TargetType="{x:Type ListBox}">
  583. <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" />
  584. <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled" />
  585. <Setter Property="ScrollViewer.CanContentScroll" Value="true" />
  586. <Setter Property="BorderThickness" Value="1" />
  587. <Setter Property="ScrollViewer.PanningMode" Value="Both" />
  588. <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
  589. <Setter Property="Foreground" Value="{DynamicResource MuchinfoBrush13}" />
  590. <Setter Property="Padding" Value="0" />
  591. <Setter Property="VerticalContentAlignment" Value="Center" />
  592. <Setter Property="Template">
  593. <Setter.Value>
  594. <ControlTemplate TargetType="{x:Type ListBox}">
  595. <ScrollViewer BorderBrush="{TemplateBinding BorderBrush}"
  596. BorderThickness="{TemplateBinding BorderThickness}"
  597. Focusable="false"
  598. Padding="{TemplateBinding Padding}">
  599. <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  600. </ScrollViewer>
  601. <ControlTemplate.Triggers>
  602. <MultiTrigger>
  603. <MultiTrigger.Conditions>
  604. <Condition Property="IsGrouping" Value="true" />
  605. </MultiTrigger.Conditions>
  606. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  607. </MultiTrigger>
  608. </ControlTemplate.Triggers>
  609. </ControlTemplate>
  610. </Setter.Value>
  611. </Setter>
  612. </Style>
  613. <Style x:Key="ChartCycleListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
  614. <Setter Property="FontSize" Value="10" />
  615. <Setter Property="Background" Value="Transparent" />
  616. <Setter Property="BorderThickness" Value="0,0,1,0" />
  617. <Setter Property="Foreground" Value="{DynamicResource MainForegroundBrush}" />
  618. <Setter Property="HorizontalContentAlignment" Value="Center" />
  619. <Setter Property="VerticalContentAlignment" Value="Center" />
  620. <Setter Property="BorderBrush" Value="{DynamicResource CommonBorderBrush}" />
  621. <Setter Property="Padding" Value="3" />
  622. <Setter Property="Template">
  623. <Setter.Value>
  624. <ControlTemplate TargetType="{x:Type ListBoxItem}">
  625. <Border x:Name="Bd"
  626. Background="{TemplateBinding Background}"
  627. BorderBrush="{TemplateBinding BorderBrush}"
  628. BorderThickness="{TemplateBinding BorderThickness}"
  629. Padding="{TemplateBinding Padding}"
  630. SnapsToDevicePixels="True">
  631. <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
  632. VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
  633. Content="{TemplateBinding Content}"
  634. ContentStringFormat="{TemplateBinding ContentStringFormat}"
  635. ContentTemplate="{TemplateBinding ContentTemplate}"
  636. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  637. </Border>
  638. <ControlTemplate.Triggers>
  639. <Trigger Property="IsSelected" Value="True">
  640. <Setter TargetName="Bd" Property="Background" Value="{DynamicResource SelectedBackBrush}" />
  641. </Trigger>
  642. <Trigger Property="IsEnabled" Value="False">
  643. <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
  644. </Trigger>
  645. </ControlTemplate.Triggers>
  646. </ControlTemplate>
  647. </Setter.Value>
  648. </Setter>
  649. </Style>
  650. <Style x:Key="ChartIndecatorListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
  651. <Setter Property="FontSize" Value="10" />
  652. <Setter Property="Background" Value="Transparent" />
  653. <Setter Property="BorderThickness" Value="0,0,1,0" />
  654. <Setter Property="Foreground" Value="{DynamicResource MainForegroundBrush}" />
  655. <Setter Property="HorizontalContentAlignment" Value="Center" />
  656. <Setter Property="VerticalContentAlignment" Value="Center" />
  657. <Setter Property="BorderBrush" Value="{DynamicResource ContextBorderBrush}" />
  658. <Setter Property="Padding" Value="3,1" />
  659. <Setter Property="Template">
  660. <Setter.Value>
  661. <ControlTemplate TargetType="{x:Type ListBoxItem}">
  662. <Border x:Name="Bd"
  663. Background="{TemplateBinding Background}"
  664. BorderBrush="{TemplateBinding BorderBrush}"
  665. BorderThickness="{TemplateBinding BorderThickness}"
  666. Padding="{TemplateBinding Padding}"
  667. SnapsToDevicePixels="True">
  668. <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
  669. VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
  670. Content="{TemplateBinding Content}"
  671. ContentStringFormat="{TemplateBinding ContentStringFormat}"
  672. ContentTemplate="{TemplateBinding ContentTemplate}"
  673. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  674. </Border>
  675. <ControlTemplate.Triggers>
  676. <Trigger Property="IsSelected" Value="True">
  677. <Setter TargetName="Bd" Property="Background" Value="{DynamicResource SelectedBackBrush}" />
  678. </Trigger>
  679. <Trigger Property="IsEnabled" Value="False">
  680. <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
  681. </Trigger>
  682. </ControlTemplate.Triggers>
  683. </ControlTemplate>
  684. </Setter.Value>
  685. </Setter>
  686. </Style>
  687. <Style TargetType="{x:Type GroupBox}">
  688. <Setter Property="BorderBrush" Value="{x:Static Themes:ClassicBorderDecorator.ClassicBorderBrush}" />
  689. <Setter Property="BorderThickness" Value="1" />
  690. <Setter Property="Template">
  691. <Setter.Value>
  692. <ControlTemplate TargetType="{x:Type GroupBox}">
  693. <Grid SnapsToDevicePixels="true">
  694. <Grid.ColumnDefinitions>
  695. <ColumnDefinition Width="6" />
  696. <ColumnDefinition Width="Auto" />
  697. <ColumnDefinition Width="*" />
  698. <ColumnDefinition Width="6" />
  699. </Grid.ColumnDefinitions>
  700. <Grid.RowDefinitions>
  701. <RowDefinition Height="Auto" />
  702. <RowDefinition Height="Auto" />
  703. <RowDefinition Height="*" />
  704. <RowDefinition Height="6" />
  705. </Grid.RowDefinitions>
  706. <Border Grid.Row="1"
  707. Grid.RowSpan="3"
  708. Grid.Column="0"
  709. Grid.ColumnSpan="4"
  710. Background="{TemplateBinding Background}"
  711. BorderBrush="Transparent"
  712. BorderThickness="{TemplateBinding BorderThickness}" />
  713. <Themes:ClassicBorderDecorator Grid.Row="1"
  714. Grid.RowSpan="3"
  715. Grid.ColumnSpan="4"
  716. BorderBrush="{TemplateBinding BorderBrush}"
  717. BorderStyle="Etched"
  718. BorderThickness="{TemplateBinding BorderThickness}">
  719. <Themes:ClassicBorderDecorator.OpacityMask>
  720. <MultiBinding Converter="{StaticResource BorderGapMaskConverter}" ConverterParameter="7">
  721. <Binding ElementName="Header" Path="ActualWidth" />
  722. <Binding Path="ActualWidth" RelativeSource="{RelativeSource Self}" />
  723. <Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}" />
  724. </MultiBinding>
  725. </Themes:ClassicBorderDecorator.OpacityMask>
  726. </Themes:ClassicBorderDecorator>
  727. <Border x:Name="Header"
  728. Grid.Row="0"
  729. Grid.RowSpan="2"
  730. Grid.Column="1"
  731. Padding="3,0,3,0">
  732. <ContentPresenter ContentSource="Header"
  733. RecognizesAccessKey="True"
  734. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  735. </Border>
  736. <ContentPresenter Grid.Row="2"
  737. Grid.Column="1"
  738. Grid.ColumnSpan="2"
  739. Margin="{TemplateBinding Padding}"
  740. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  741. </Grid>
  742. </ControlTemplate>
  743. </Setter.Value>
  744. </Setter>
  745. </Style>
  746. <LinearGradientBrush x:Key="TextBoxBorder" MappingMode="Absolute" StartPoint="0,0" EndPoint="0,20">
  747. <GradientStop Offset="0.05" Color="#ABADB3" />
  748. <GradientStop Offset="0.07" Color="#E2E3EA" />
  749. <GradientStop Offset="1" Color="#E3E9EF" />
  750. </LinearGradientBrush>
  751. <LinearGradientBrush x:Key="TextBox_MouseOver" StartPoint="0,0" EndPoint="0,1">
  752. <GradientStop Offset="0.05" Color="#5794BF" />
  753. <GradientStop Offset="0.07" Color="#B7D5EA" />
  754. <GradientStop Offset="1" Color="#C7E2F1" />
  755. </LinearGradientBrush>
  756. <LinearGradientBrush x:Key="TextBox_Focused" StartPoint="0,0" EndPoint="0,1">
  757. <GradientStop Offset="0.05" Color="#3D7BAD" />
  758. <GradientStop Offset="0.07" Color="#A4C9E3" />
  759. <GradientStop Offset="1" Color="#B7D9ED" />
  760. </LinearGradientBrush>
  761. <SolidColorBrush x:Key="TextBox_DisabledBorder" Color="#ADB2B5" />
  762. <SolidColorBrush x:Key="TextBox_DisabledBackground" Color="#F4F4F4" />
  763. <!-- 默认空样式,避免全局样式影响 -->
  764. <Style x:Key="LoginAccountTextBoxStyle" TargetType="{x:Type TextBox}">
  765. <Style.Resources>
  766. <VisualBrush x:Key="TipBrush"
  767. AlignmentX="Left"
  768. Stretch="None"
  769. TileMode="None">
  770. <VisualBrush.Visual>
  771. <StackPanel Orientation="Horizontal">
  772. <TextBlock FontSize="10"
  773. Foreground="Transparent"
  774. Text="1111111" />
  775. <TextBlock FontSize="13"
  776. Foreground="#FFA1A6AA"
  777. Text="{x:Static resource:Client_Resource.Content_AccountNumber}" />
  778. </StackPanel>
  779. </VisualBrush.Visual>
  780. </VisualBrush>
  781. </Style.Resources>
  782. <Setter Property="Foreground" Value="#FF444444" />
  783. <Setter Property="FontSize" Value="13" />
  784. <Setter Property="BorderThickness" Value="1" />
  785. <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorder}" />
  786. <Setter Property="Template">
  787. <Setter.Value>
  788. <ControlTemplate TargetType="{x:Type TextBox}">
  789. <Grid Height="{TemplateBinding Height}"
  790. HorizontalAlignment="Stretch"
  791. VerticalAlignment="Stretch">
  792. <Border x:Name="Border"
  793. Height="{TemplateBinding Height}"
  794. Margin="0,0,8,0"
  795. Panel.ZIndex="1"
  796. Background="{TemplateBinding Background}"
  797. BorderBrush="{TemplateBinding BorderBrush}"
  798. BorderThickness="{TemplateBinding BorderThickness}"
  799. CornerRadius="1" />
  800. <Border x:Name="MouseOverVisual"
  801. Height="{TemplateBinding Height}"
  802. Margin="0,0,8,0"
  803. Panel.ZIndex="1"
  804. BorderBrush="{StaticResource TextBox_MouseOver}"
  805. BorderThickness="{TemplateBinding BorderThickness}"
  806. CornerRadius="1"
  807. Opacity="0" />
  808. <Border x:Name="FocusVisual"
  809. Height="{TemplateBinding Height}"
  810. Margin="0,0,8,0"
  811. Panel.ZIndex="1"
  812. BorderBrush="{StaticResource TextBox_Focused}"
  813. BorderThickness="{TemplateBinding BorderThickness}"
  814. CornerRadius="1"
  815. Opacity="0" />
  816. <Image Width="14"
  817. Height="14"
  818. Margin="12,0,0,0"
  819. HorizontalAlignment="Left"
  820. VerticalAlignment="Center"
  821. Panel.ZIndex="1"
  822. Source="{DynamicResource AccountBoxIcon}" />
  823. <!--
  824. <Rectangle Width="12"
  825. Height="20"
  826. Margin="12,0,0,0"
  827. HorizontalAlignment="Left"
  828. VerticalAlignment="Center"
  829. Panel.ZIndex="1"
  830. Fill="{StaticResource LoginAccountTipDrawingBrush}" />
  831. -->
  832. <ScrollViewer x:Name="PART_ContentHost"
  833. Margin="0,0,8,0"
  834. HorizontalAlignment="Stretch"
  835. VerticalAlignment="Center"
  836. VerticalContentAlignment="Center"
  837. Panel.ZIndex="2"
  838. Background="{x:Null}"
  839. FontSize="{TemplateBinding FontSize}"
  840. Foreground="{TemplateBinding Foreground}"
  841. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  842. </Grid>
  843. <ControlTemplate.Triggers>
  844. <Trigger Property="IsMouseOver" Value="True">
  845. <Setter TargetName="MouseOverVisual" Property="Opacity" Value="1" />
  846. </Trigger>
  847. <Trigger Property="IsFocused" Value="True">
  848. <Setter TargetName="FocusVisual" Property="Opacity" Value="1" />
  849. </Trigger>
  850. <Trigger Property="IsEnabled" Value="False">
  851. <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource TextBox_DisabledBorder}" />
  852. <Setter TargetName="Border" Property="Background" Value="{StaticResource TextBox_DisabledBackground}" />
  853. <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
  854. </Trigger>
  855. <Trigger Property="Text" Value="{x:Null}">
  856. <Setter Property="Background" Value="{StaticResource TipBrush}" />
  857. </Trigger>
  858. <Trigger Property="Text" Value="">
  859. <Setter Property="Background" Value="{StaticResource TipBrush}" />
  860. </Trigger>
  861. </ControlTemplate.Triggers>
  862. </ControlTemplate>
  863. </Setter.Value>
  864. </Setter>
  865. </Style>
  866. <Style x:Key="LoginComboBoxStyle" TargetType="{x:Type ComboBox}">
  867. <Setter Property="Foreground" Value="{DynamicResource TextBoxForeground}" />
  868. <Setter Property="BorderThickness" Value="1" />
  869. <Setter Property="VerticalContentAlignment" Value="Center" />
  870. <Setter Property="SnapsToDevicePixels" Value="true" />
  871. <Setter Property="IsEditable" Value="True" />
  872. <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorder}" />
  873. <Setter Property="Template">
  874. <Setter.Value>
  875. <ControlTemplate TargetType="{x:Type ComboBox}">
  876. <Grid Margin="0,0,8,0">
  877. <!-- ToggleButton 已数据绑定到 ComboBox 本身以切换 IsDropDownOpen -->
  878. <ToggleButton x:Name="ToggleButton"
  879. Background="{TemplateBinding Background}"
  880. BorderBrush="{TemplateBinding BorderBrush}"
  881. BorderThickness="{TemplateBinding BorderThickness}"
  882. ClickMode="Press"
  883. Focusable="false"
  884. IsChecked="{Binding IsDropDownOpen,
  885. Mode=TwoWay,
  886. RelativeSource={RelativeSource TemplatedParent}}"
  887. Style="{DynamicResource LoginComboBoxToggleButton}" />
  888. <ContentPresenter x:Name="ContentSite"
  889. VerticalAlignment="Center"
  890. Content="{TemplateBinding SelectionBoxItem}"
  891. ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
  892. ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
  893. IsHitTestVisible="False" />
  894. <!-- 必须将 TextBox 命名为 PART_EditableTextBox,否则 ComboBox 将无法识别它 -->
  895. <TextBox x:Name="PART_EditableTextBox"
  896. VerticalAlignment="Stretch"
  897. VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
  898. Background="Transparent"
  899. BorderThickness="0"
  900. Focusable="True"
  901. IsHitTestVisible="False"
  902. IsReadOnly="{TemplateBinding IsReadOnly}"
  903. Style="{DynamicResource LoginAccountTextBoxStyle}"
  904. Visibility="Hidden" />
  905. <!-- Popup 可显示 ComboBox 中的项列表。IsOpen 已数据绑定到通过 ComboBoxToggleButton 来切换的 IsDropDownOpen -->
  906. <Popup x:Name="Popup"
  907. AllowsTransparency="True"
  908. Focusable="False"
  909. IsOpen="{TemplateBinding IsDropDownOpen}"
  910. Placement="Bottom"
  911. PopupAnimation="Fade">
  912. <Grid x:Name="DropDown"
  913. MinWidth="{TemplateBinding ActualWidth}"
  914. MaxHeight="{TemplateBinding MaxDropDownHeight}"
  915. SnapsToDevicePixels="True">
  916. <Border x:Name="DropDownBorder"
  917. Background="{TemplateBinding Background}"
  918. BorderBrush="{TemplateBinding BorderBrush}"
  919. BorderThickness="1" />
  920. <ScrollViewer Margin="4,2,4,6"
  921. CanContentScroll="True"
  922. HorizontalScrollBarVisibility="Auto"
  923. SnapsToDevicePixels="True"
  924. Style="{DynamicResource SimpleScrollViewer}"
  925. VerticalScrollBarVisibility="Auto">
  926. <!-- StackPanel 用于显示子级,方法是将 IsItemsHost 设置为 True -->
  927. <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
  928. </ScrollViewer>
  929. </Grid>
  930. </Popup>
  931. </Grid>
  932. <ControlTemplate.Triggers>
  933. <!-- 这会强制 DropDown 的大小有最小限制(如果它为空) -->
  934. <Trigger Property="HasItems" Value="false">
  935. <Setter TargetName="DropDownBorder" Property="MinHeight" Value="95" />
  936. </Trigger>
  937. <Trigger Property="IsGrouping" Value="true">
  938. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  939. </Trigger>
  940. <Trigger SourceName="Popup" Property="AllowsTransparency" Value="true">
  941. <Setter TargetName="DropDownBorder" Property="CornerRadius" Value="4" />
  942. <Setter TargetName="DropDownBorder" Property="Margin" Value="0,2,0,0" />
  943. </Trigger>
  944. <Trigger Property="IsEditable" Value="true">
  945. <Setter Property="IsTabStop" Value="false" />
  946. <Setter TargetName="PART_EditableTextBox" Property="Visibility" Value="Visible" />
  947. <Setter TargetName="ContentSite" Property="Visibility" Value="Hidden" />
  948. </Trigger>
  949. <Trigger Property="IsEnabled" Value="False">
  950. <Setter Property="BorderBrush" Value="{StaticResource TextBox_DisabledBackground}" />
  951. <Setter Property="Background" Value="{StaticResource TextBox_DisabledBackground}" />
  952. </Trigger>
  953. </ControlTemplate.Triggers>
  954. </ControlTemplate>
  955. </Setter.Value>
  956. </Setter>
  957. </Style>
  958. <!-- 下单界面选择、输入商品的style -->
  959. <Style x:Key="GoodsComboBoxStyle" TargetType="{x:Type ComboBox}">
  960. <Setter Property="Foreground" Value="{DynamicResource TextBoxForeground}" />
  961. <Setter Property="BorderThickness" Value="1" />
  962. <Setter Property="VerticalContentAlignment" Value="Center" />
  963. <Setter Property="SnapsToDevicePixels" Value="true" />
  964. <Setter Property="IsEditable" Value="True" />
  965. <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorder}" />
  966. <Setter Property="Template">
  967. <Setter.Value>
  968. <ControlTemplate TargetType="{x:Type ComboBox}">
  969. <Grid Margin="0,0,8,0">
  970. <!-- ToggleButton 已数据绑定到 ComboBox 本身以切换 IsDropDownOpen -->
  971. <ToggleButton x:Name="ToggleButton"
  972. Background="{TemplateBinding Background}"
  973. BorderBrush="{TemplateBinding BorderBrush}"
  974. BorderThickness="{TemplateBinding BorderThickness}"
  975. ClickMode="Press"
  976. Focusable="false"
  977. IsChecked="{Binding IsDropDownOpen,
  978. Mode=TwoWay,
  979. RelativeSource={RelativeSource TemplatedParent}}"
  980. Style="{DynamicResource LoginComboBoxToggleButton}" />
  981. <ContentPresenter x:Name="ContentSite"
  982. VerticalAlignment="Center"
  983. Content="{TemplateBinding SelectionBoxItem}"
  984. ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
  985. ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
  986. IsHitTestVisible="False" />
  987. <!-- 必须将 TextBox 命名为 PART_EditableTextBox,否则 ComboBox 将无法识别它 -->
  988. <TextBox x:Name="PART_EditableTextBox"
  989. VerticalAlignment="Stretch"
  990. VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
  991. Background="Transparent"
  992. BorderThickness="0"
  993. Focusable="True"
  994. IsHitTestVisible="False"
  995. IsReadOnly="{TemplateBinding IsReadOnly}"
  996. Style="{DynamicResource LoginAccountTextBoxStyle}"
  997. Visibility="Hidden" />
  998. <!-- Popup 可显示 ComboBox 中的项列表。IsOpen 已数据绑定到通过 ComboBoxToggleButton 来切换的 IsDropDownOpen -->
  999. <Popup x:Name="Popup"
  1000. AllowsTransparency="True"
  1001. Focusable="False"
  1002. IsOpen="{TemplateBinding IsDropDownOpen}"
  1003. Placement="Bottom"
  1004. PopupAnimation="Fade">
  1005. <Grid x:Name="DropDown"
  1006. MinWidth="{TemplateBinding ActualWidth}"
  1007. MaxHeight="{TemplateBinding MaxDropDownHeight}"
  1008. SnapsToDevicePixels="True">
  1009. <Border x:Name="DropDownBorder"
  1010. Background="{TemplateBinding Background}"
  1011. BorderBrush="{TemplateBinding BorderBrush}"
  1012. BorderThickness="1" />
  1013. <ScrollViewer Margin="4,2,4,6"
  1014. CanContentScroll="True"
  1015. HorizontalScrollBarVisibility="Auto"
  1016. SnapsToDevicePixels="True"
  1017. Style="{DynamicResource SimpleScrollViewer}"
  1018. VerticalScrollBarVisibility="Auto">
  1019. <!-- StackPanel 用于显示子级,方法是将 IsItemsHost 设置为 True -->
  1020. <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
  1021. </ScrollViewer>
  1022. </Grid>
  1023. </Popup>
  1024. </Grid>
  1025. <ControlTemplate.Triggers>
  1026. <!-- 这会强制 DropDown 的大小有最小限制(如果它为空) -->
  1027. <Trigger Property="HasItems" Value="false">
  1028. <Setter TargetName="DropDownBorder" Property="MinHeight" Value="95" />
  1029. </Trigger>
  1030. <Trigger Property="IsGrouping" Value="true">
  1031. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  1032. </Trigger>
  1033. <Trigger SourceName="Popup" Property="AllowsTransparency" Value="true">
  1034. <Setter TargetName="DropDownBorder" Property="CornerRadius" Value="4" />
  1035. <Setter TargetName="DropDownBorder" Property="Margin" Value="0,2,0,0" />
  1036. </Trigger>
  1037. <Trigger Property="IsEditable" Value="true">
  1038. <Setter Property="IsTabStop" Value="false" />
  1039. <Setter TargetName="PART_EditableTextBox" Property="Visibility" Value="Visible" />
  1040. <Setter TargetName="ContentSite" Property="Visibility" Value="Hidden" />
  1041. </Trigger>
  1042. <Trigger Property="IsEnabled" Value="False">
  1043. <Setter Property="BorderBrush" Value="{StaticResource TextBox_DisabledBackground}" />
  1044. <Setter Property="Background" Value="{StaticResource TextBox_DisabledBackground}" />
  1045. </Trigger>
  1046. </ControlTemplate.Triggers>
  1047. </ControlTemplate>
  1048. </Setter.Value>
  1049. </Setter>
  1050. </Style>
  1051. </ResourceDictionary>