ComboBoxBaseStyle.xaml 119 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287
  1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:hc="clr-namespace:HandyControl.Controls" xmlns:system="clr-namespace:System;assembly=mscorlib">
  2. <!--默认下拉框模板-->
  3. <ControlTemplate x:Key="ComboBoxTemplate" TargetType="ComboBox">
  4. <Grid>
  5. <Grid.ColumnDefinitions>
  6. <ColumnDefinition />
  7. <ColumnDefinition Width="Auto" />
  8. </Grid.ColumnDefinitions>
  9. <Border x:Name="border" Grid.ColumnSpan="2" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
  10. <hc:ToggleBlock Grid.Column="1" Padding="1,0" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
  11. <hc:ToggleBlock.UnCheckedContent>
  12. <Path Data="{StaticResource DownGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  13. </hc:ToggleBlock.UnCheckedContent>
  14. <hc:ToggleBlock.CheckedContent>
  15. <Path Data="{StaticResource UpGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  16. </hc:ToggleBlock.CheckedContent>
  17. </hc:ToggleBlock>
  18. <hc:ToggleBlock Grid.Column="0" Grid.ColumnSpan="2" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" />
  19. <ContentPresenter Grid.Column="0" Margin="{TemplateBinding Padding}" x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
  20. <Popup x:Name="PART_Popup" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  21. <Decorator Margin="8 0">
  22. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  23. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  24. <hc:ToggleBlock.CheckedContent>
  25. <ScrollViewer Margin="2">
  26. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  27. </ScrollViewer>
  28. </hc:ToggleBlock.CheckedContent>
  29. <hc:ToggleBlock.UnCheckedContent>
  30. <hc:Empty />
  31. </hc:ToggleBlock.UnCheckedContent>
  32. </hc:ToggleBlock>
  33. </Border>
  34. </Decorator>
  35. </Popup>
  36. </Grid>
  37. <ControlTemplate.Triggers>
  38. <Trigger Property="HasItems" Value="false">
  39. <Setter Property="Height" TargetName="dropDownBorder" Value="95" />
  40. </Trigger>
  41. <Trigger Property="hc:DropDownElement.ConsistentWidth" Value="True">
  42. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  43. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  44. </Trigger>
  45. <Trigger Property="hc:DropDownElement.AutoWidth" Value="True">
  46. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{x:Static system:Double.MaxValue}" />
  47. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualHeight, ElementName=border}" />
  48. </Trigger>
  49. <MultiTrigger>
  50. <MultiTrigger.Conditions>
  51. <Condition Property="IsGrouping" Value="true" />
  52. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
  53. </MultiTrigger.Conditions>
  54. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  55. </MultiTrigger>
  56. <MultiTrigger>
  57. <MultiTrigger.Conditions>
  58. <Condition Property="IsMouseOver" Value="true" />
  59. <Condition Property="IsOpen" Value="false" SourceName="PART_Popup" />
  60. </MultiTrigger.Conditions>
  61. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  62. </MultiTrigger>
  63. <Trigger Property="IsOpen" Value="True" SourceName="PART_Popup">
  64. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  65. </Trigger>
  66. <Trigger Property="IsFocused" Value="True">
  67. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  68. </Trigger>
  69. <Trigger Property="IsEnabled" Value="false">
  70. <Setter Property="Opacity" Value="0.4" />
  71. </Trigger>
  72. </ControlTemplate.Triggers>
  73. </ControlTemplate>
  74. <!--标题在顶部的下拉框模板-->
  75. <ControlTemplate x:Key="ComboBoxTopTemplate" TargetType="ComboBox">
  76. <Grid>
  77. <Grid.RowDefinitions>
  78. <RowDefinition Height="Auto" />
  79. <RowDefinition MinHeight="{Binding Path=(hc:InfoElement.MinContentHeight),RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=(hc:InfoElement.ContentHeight),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Double2GridLengthConverter}}" />
  80. </Grid.RowDefinitions>
  81. <DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheTop),RelativeSource={RelativeSource TemplatedParent}}">
  82. <ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}" />
  83. <TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}" />
  84. </DockPanel>
  85. <Grid x:Name="contentPanel" Grid.Row="1">
  86. <Grid.ColumnDefinitions>
  87. <ColumnDefinition />
  88. <ColumnDefinition Width="Auto" />
  89. </Grid.ColumnDefinitions>
  90. <Border x:Name="border" Grid.ColumnSpan="2" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
  91. <TextBlock Grid.Column="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}" HorizontalAlignment="Stretch" Style="{StaticResource TextBlockDefaultThiLight}" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}" />
  92. <hc:ToggleBlock Grid.Column="1" Padding="1,0" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
  93. <hc:ToggleBlock.UnCheckedContent>
  94. <Path Data="{StaticResource DownGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  95. </hc:ToggleBlock.UnCheckedContent>
  96. <hc:ToggleBlock.CheckedContent>
  97. <Path Data="{StaticResource UpGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  98. </hc:ToggleBlock.CheckedContent>
  99. </hc:ToggleBlock>
  100. <hc:ToggleBlock Grid.Column="0" Grid.ColumnSpan="2" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" />
  101. <ContentPresenter Grid.Column="0" Margin="{TemplateBinding Padding}" x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
  102. <Popup x:Name="PART_Popup" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  103. <Decorator Margin="8 0">
  104. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  105. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  106. <hc:ToggleBlock.CheckedContent>
  107. <ScrollViewer Margin="2">
  108. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  109. </ScrollViewer>
  110. </hc:ToggleBlock.CheckedContent>
  111. <hc:ToggleBlock.UnCheckedContent>
  112. <hc:Empty />
  113. </hc:ToggleBlock.UnCheckedContent>
  114. </hc:ToggleBlock>
  115. </Border>
  116. </Decorator>
  117. </Popup>
  118. </Grid>
  119. </Grid>
  120. <ControlTemplate.Triggers>
  121. <Trigger Property="HasItems" Value="false">
  122. <Setter Property="Height" TargetName="dropDownBorder" Value="95" />
  123. </Trigger>
  124. <Trigger Property="hc:DropDownElement.ConsistentWidth" Value="True">
  125. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  126. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  127. </Trigger>
  128. <Trigger Property="hc:DropDownElement.AutoWidth" Value="True">
  129. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{x:Static system:Double.MaxValue}" />
  130. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualHeight, ElementName=border}" />
  131. </Trigger>
  132. <MultiTrigger>
  133. <MultiTrigger.Conditions>
  134. <Condition Property="IsGrouping" Value="true" />
  135. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
  136. </MultiTrigger.Conditions>
  137. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  138. </MultiTrigger>
  139. <MultiTrigger>
  140. <MultiTrigger.Conditions>
  141. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  142. <Condition Property="IsOpen" Value="false" SourceName="PART_Popup" />
  143. </MultiTrigger.Conditions>
  144. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  145. </MultiTrigger>
  146. <Trigger Property="IsOpen" Value="True" SourceName="PART_Popup">
  147. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  148. </Trigger>
  149. <Trigger Property="IsFocused" Value="True">
  150. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  151. </Trigger>
  152. <Trigger Property="IsEnabled" Value="false">
  153. <Setter Property="Opacity" Value="0.4" TargetName="contentPanel" />
  154. </Trigger>
  155. </ControlTemplate.Triggers>
  156. </ControlTemplate>
  157. <!--标题在左侧的下拉框模板-->
  158. <ControlTemplate x:Key="ComboBoxLeftTemplate" TargetType="ComboBox">
  159. <Grid MinHeight="{Binding Path=(hc:InfoElement.MinContentHeight),RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=(hc:InfoElement.ContentHeight),RelativeSource={RelativeSource TemplatedParent}}">
  160. <Grid.ColumnDefinitions>
  161. <ColumnDefinition Width="{Binding Path=(hc:InfoElement.TitleWidth),RelativeSource={RelativeSource TemplatedParent}}" />
  162. <ColumnDefinition />
  163. </Grid.ColumnDefinitions>
  164. <DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheLeft),RelativeSource={RelativeSource TemplatedParent}}">
  165. <ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}" />
  166. <TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}" />
  167. </DockPanel>
  168. <Grid x:Name="contentPanel" Grid.Column="1">
  169. <Grid.ColumnDefinitions>
  170. <ColumnDefinition />
  171. <ColumnDefinition Width="Auto" />
  172. </Grid.ColumnDefinitions>
  173. <Border x:Name="border" Grid.ColumnSpan="2" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
  174. <TextBlock Grid.Column="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}" HorizontalAlignment="Stretch" Style="{StaticResource TextBlockDefaultThiLight}" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}" />
  175. <hc:ToggleBlock Grid.Column="1" Padding="1,0" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
  176. <hc:ToggleBlock.UnCheckedContent>
  177. <Path Data="{StaticResource DownGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  178. </hc:ToggleBlock.UnCheckedContent>
  179. <hc:ToggleBlock.CheckedContent>
  180. <Path Data="{StaticResource UpGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  181. </hc:ToggleBlock.CheckedContent>
  182. </hc:ToggleBlock>
  183. <hc:ToggleBlock Grid.Column="0" Grid.ColumnSpan="2" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" />
  184. <ContentPresenter Grid.Column="0" Margin="{TemplateBinding Padding}" x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
  185. <Popup x:Name="PART_Popup" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  186. <Decorator Margin="8 0">
  187. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  188. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  189. <hc:ToggleBlock.CheckedContent>
  190. <ScrollViewer Margin="2">
  191. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  192. </ScrollViewer>
  193. </hc:ToggleBlock.CheckedContent>
  194. <hc:ToggleBlock.UnCheckedContent>
  195. <hc:Empty />
  196. </hc:ToggleBlock.UnCheckedContent>
  197. </hc:ToggleBlock>
  198. </Border>
  199. </Decorator>
  200. </Popup>
  201. </Grid>
  202. </Grid>
  203. <ControlTemplate.Triggers>
  204. <Trigger Property="HasItems" Value="false">
  205. <Setter Property="Height" TargetName="dropDownBorder" Value="95" />
  206. </Trigger>
  207. <Trigger Property="hc:DropDownElement.ConsistentWidth" Value="True">
  208. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  209. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  210. </Trigger>
  211. <Trigger Property="hc:DropDownElement.AutoWidth" Value="True">
  212. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{x:Static system:Double.MaxValue}" />
  213. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualHeight, ElementName=border}" />
  214. </Trigger>
  215. <MultiTrigger>
  216. <MultiTrigger.Conditions>
  217. <Condition Property="IsGrouping" Value="true" />
  218. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
  219. </MultiTrigger.Conditions>
  220. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  221. </MultiTrigger>
  222. <MultiTrigger>
  223. <MultiTrigger.Conditions>
  224. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  225. <Condition Property="IsOpen" Value="false" SourceName="PART_Popup" />
  226. </MultiTrigger.Conditions>
  227. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  228. </MultiTrigger>
  229. <Trigger Property="IsOpen" Value="True" SourceName="PART_Popup">
  230. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  231. </Trigger>
  232. <Trigger Property="IsFocused" Value="True">
  233. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  234. </Trigger>
  235. <Trigger Property="IsEnabled" Value="false">
  236. <Setter Property="Opacity" Value="0.4" TargetName="contentPanel" />
  237. </Trigger>
  238. </ControlTemplate.Triggers>
  239. </ControlTemplate>
  240. <!--可编辑下拉框中的输入框-->
  241. <Style x:Key="ComboBoxEditableTextBox" TargetType="TextBox">
  242. <Setter Property="OverridesDefaultStyle" Value="true" />
  243. <Setter Property="AllowDrop" Value="true" />
  244. <Setter Property="MinWidth" Value="0" />
  245. <Setter Property="MinHeight" Value="0" />
  246. <Setter Property="Padding" Value="{StaticResource DefaultControlPadding}" />
  247. <Setter Property="FocusVisualStyle" Value="{x:Null}" />
  248. <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst" />
  249. <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
  250. <Setter Property="Template">
  251. <Setter.Value>
  252. <ControlTemplate TargetType="TextBox">
  253. <ScrollViewer Margin="-2,0,0,0" Padding="{TemplateBinding Padding}" x:Name="PART_ContentHost" Background="Transparent" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" />
  254. </ControlTemplate>
  255. </Setter.Value>
  256. </Setter>
  257. </Style>
  258. <!--默认可编辑下拉框模板-->
  259. <ControlTemplate x:Key="ComboBoxEditableTemplate" TargetType="ComboBox">
  260. <Grid>
  261. <Grid.ColumnDefinitions>
  262. <ColumnDefinition />
  263. <ColumnDefinition Width="Auto" />
  264. </Grid.ColumnDefinitions>
  265. <Border x:Name="border" Grid.ColumnSpan="2" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
  266. <hc:ToggleBlock Grid.Column="1" Padding="1,0" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
  267. <hc:ToggleBlock.UnCheckedContent>
  268. <Path Data="{StaticResource DownGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  269. </hc:ToggleBlock.UnCheckedContent>
  270. <hc:ToggleBlock.CheckedContent>
  271. <Path Data="{StaticResource UpGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  272. </hc:ToggleBlock.CheckedContent>
  273. </hc:ToggleBlock>
  274. <TextBox x:Name="PART_EditableTextBox" Grid.Column="0" Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
  275. <Popup x:Name="PART_Popup" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  276. <Decorator Margin="8 0">
  277. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  278. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  279. <hc:ToggleBlock.CheckedContent>
  280. <ScrollViewer Margin="2">
  281. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  282. </ScrollViewer>
  283. </hc:ToggleBlock.CheckedContent>
  284. <hc:ToggleBlock.UnCheckedContent>
  285. <hc:Empty />
  286. </hc:ToggleBlock.UnCheckedContent>
  287. </hc:ToggleBlock>
  288. </Border>
  289. </Decorator>
  290. </Popup>
  291. </Grid>
  292. <ControlTemplate.Triggers>
  293. <Trigger Property="HasItems" Value="false">
  294. <Setter Property="Height" TargetName="dropDownBorder" Value="95" />
  295. </Trigger>
  296. <Trigger Property="hc:DropDownElement.ConsistentWidth" Value="True">
  297. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  298. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  299. </Trigger>
  300. <Trigger Property="hc:DropDownElement.AutoWidth" Value="True">
  301. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{x:Static system:Double.MaxValue}" />
  302. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualHeight, ElementName=border}" />
  303. </Trigger>
  304. <MultiTrigger>
  305. <MultiTrigger.Conditions>
  306. <Condition Property="IsGrouping" Value="true" />
  307. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
  308. </MultiTrigger.Conditions>
  309. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  310. </MultiTrigger>
  311. <MultiTrigger>
  312. <MultiTrigger.Conditions>
  313. <Condition Property="IsMouseOver" Value="true" />
  314. <Condition Property="IsFocused" Value="false" SourceName="PART_EditableTextBox" />
  315. </MultiTrigger.Conditions>
  316. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  317. </MultiTrigger>
  318. <Trigger Property="IsFocused" Value="True" SourceName="PART_EditableTextBox">
  319. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  320. </Trigger>
  321. <Trigger Property="IsEnabled" Value="false">
  322. <Setter Property="Opacity" Value="0.4" />
  323. </Trigger>
  324. </ControlTemplate.Triggers>
  325. </ControlTemplate>
  326. <!--标题在顶部的可编辑下拉框模板-->
  327. <ControlTemplate x:Key="ComboBoxEditableTopTemplate" TargetType="ComboBox">
  328. <Grid>
  329. <Grid.RowDefinitions>
  330. <RowDefinition Height="Auto" />
  331. <RowDefinition MinHeight="{Binding Path=(hc:InfoElement.MinContentHeight),RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=(hc:InfoElement.ContentHeight),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Double2GridLengthConverter}}" />
  332. </Grid.RowDefinitions>
  333. <DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheTop),RelativeSource={RelativeSource TemplatedParent}}">
  334. <ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}" />
  335. <TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}" />
  336. </DockPanel>
  337. <Grid x:Name="contentPanel" Grid.Row="1">
  338. <Grid.ColumnDefinitions>
  339. <ColumnDefinition />
  340. <ColumnDefinition Width="Auto" />
  341. </Grid.ColumnDefinitions>
  342. <Border x:Name="border" Grid.ColumnSpan="2" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
  343. <hc:ToggleBlock Grid.Column="1" Padding="1,0" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
  344. <hc:ToggleBlock.UnCheckedContent>
  345. <Path Data="{StaticResource DownGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  346. </hc:ToggleBlock.UnCheckedContent>
  347. <hc:ToggleBlock.CheckedContent>
  348. <Path Data="{StaticResource UpGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  349. </hc:ToggleBlock.CheckedContent>
  350. </hc:ToggleBlock>
  351. <TextBlock VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}" HorizontalAlignment="Stretch" Style="{StaticResource TextBlockDefaultThiLight}" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}" />
  352. <TextBox x:Name="PART_EditableTextBox" Grid.Column="0" Padding="{TemplateBinding Padding}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
  353. <Popup x:Name="PART_Popup" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  354. <Decorator Margin="8 0">
  355. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  356. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  357. <hc:ToggleBlock.CheckedContent>
  358. <ScrollViewer Margin="2">
  359. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  360. </ScrollViewer>
  361. </hc:ToggleBlock.CheckedContent>
  362. <hc:ToggleBlock.UnCheckedContent>
  363. <hc:Empty />
  364. </hc:ToggleBlock.UnCheckedContent>
  365. </hc:ToggleBlock>
  366. </Border>
  367. </Decorator>
  368. </Popup>
  369. </Grid>
  370. </Grid>
  371. <ControlTemplate.Triggers>
  372. <Trigger Property="HasItems" Value="false">
  373. <Setter Property="Height" TargetName="dropDownBorder" Value="95" />
  374. </Trigger>
  375. <Trigger Property="hc:DropDownElement.ConsistentWidth" Value="True">
  376. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  377. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  378. </Trigger>
  379. <Trigger Property="hc:DropDownElement.AutoWidth" Value="True">
  380. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{x:Static system:Double.MaxValue}" />
  381. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualHeight, ElementName=border}" />
  382. </Trigger>
  383. <MultiTrigger>
  384. <MultiTrigger.Conditions>
  385. <Condition Property="IsGrouping" Value="true" />
  386. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
  387. </MultiTrigger.Conditions>
  388. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  389. </MultiTrigger>
  390. <MultiTrigger>
  391. <MultiTrigger.Conditions>
  392. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  393. <Condition Property="IsFocused" Value="false" SourceName="PART_EditableTextBox" />
  394. </MultiTrigger.Conditions>
  395. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  396. </MultiTrigger>
  397. <Trigger Property="IsFocused" Value="True" SourceName="PART_EditableTextBox">
  398. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  399. </Trigger>
  400. <Trigger Property="IsEnabled" Value="false">
  401. <Setter Property="Opacity" Value="0.4" TargetName="contentPanel" />
  402. </Trigger>
  403. </ControlTemplate.Triggers>
  404. </ControlTemplate>
  405. <!--标题在左侧的可编辑下拉框模板-->
  406. <ControlTemplate x:Key="ComboBoxEditableLeftTemplate" TargetType="ComboBox">
  407. <Grid MinHeight="{Binding Path=(hc:InfoElement.MinContentHeight),RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=(hc:InfoElement.ContentHeight),RelativeSource={RelativeSource TemplatedParent}}">
  408. <Grid.ColumnDefinitions>
  409. <ColumnDefinition Width="{Binding Path=(hc:InfoElement.TitleWidth),RelativeSource={RelativeSource TemplatedParent}}" />
  410. <ColumnDefinition />
  411. </Grid.ColumnDefinitions>
  412. <DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheLeft),RelativeSource={RelativeSource TemplatedParent}}">
  413. <ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}" />
  414. <TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}" />
  415. </DockPanel>
  416. <Grid x:Name="contentPanel" Grid.Column="1">
  417. <Grid.ColumnDefinitions>
  418. <ColumnDefinition />
  419. <ColumnDefinition Width="Auto" />
  420. </Grid.ColumnDefinitions>
  421. <Border x:Name="border" Grid.ColumnSpan="2" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
  422. <hc:ToggleBlock Grid.Column="1" Padding="1,0" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
  423. <hc:ToggleBlock.UnCheckedContent>
  424. <Path Data="{StaticResource DownGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  425. </hc:ToggleBlock.UnCheckedContent>
  426. <hc:ToggleBlock.CheckedContent>
  427. <Path Data="{StaticResource UpGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  428. </hc:ToggleBlock.CheckedContent>
  429. </hc:ToggleBlock>
  430. <TextBlock VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}" HorizontalAlignment="Stretch" Style="{StaticResource TextBlockDefaultThiLight}" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}" />
  431. <TextBox x:Name="PART_EditableTextBox" Grid.Column="0" Padding="{TemplateBinding Padding}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
  432. <Popup x:Name="PART_Popup" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  433. <Decorator Margin="8 0">
  434. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  435. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  436. <hc:ToggleBlock.CheckedContent>
  437. <ScrollViewer Margin="2">
  438. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  439. </ScrollViewer>
  440. </hc:ToggleBlock.CheckedContent>
  441. <hc:ToggleBlock.UnCheckedContent>
  442. <hc:Empty />
  443. </hc:ToggleBlock.UnCheckedContent>
  444. </hc:ToggleBlock>
  445. </Border>
  446. </Decorator>
  447. </Popup>
  448. </Grid>
  449. </Grid>
  450. <ControlTemplate.Triggers>
  451. <Trigger Property="HasItems" Value="false">
  452. <Setter Property="Height" TargetName="dropDownBorder" Value="95" />
  453. </Trigger>
  454. <Trigger Property="hc:DropDownElement.ConsistentWidth" Value="True">
  455. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  456. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  457. </Trigger>
  458. <Trigger Property="hc:DropDownElement.AutoWidth" Value="True">
  459. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{x:Static system:Double.MaxValue}" />
  460. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualHeight, ElementName=border}" />
  461. </Trigger>
  462. <MultiTrigger>
  463. <MultiTrigger.Conditions>
  464. <Condition Property="IsGrouping" Value="true" />
  465. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
  466. </MultiTrigger.Conditions>
  467. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  468. </MultiTrigger>
  469. <MultiTrigger>
  470. <MultiTrigger.Conditions>
  471. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  472. <Condition Property="IsFocused" Value="false" SourceName="PART_EditableTextBox" />
  473. </MultiTrigger.Conditions>
  474. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  475. </MultiTrigger>
  476. <Trigger Property="IsFocused" Value="True" SourceName="PART_EditableTextBox">
  477. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  478. </Trigger>
  479. <Trigger Property="IsEnabled" Value="false">
  480. <Setter Property="Opacity" Value="0.4" TargetName="contentPanel" />
  481. </Trigger>
  482. </ControlTemplate.Triggers>
  483. </ControlTemplate>
  484. <!--下拉项基样式-->
  485. <Style x:Key="ComboBoxItemBaseStyle" TargetType="ComboBoxItem">
  486. <Setter Property="SnapsToDevicePixels" Value="True" />
  487. <Setter Property="Padding" Value="{StaticResource DefaultControlPadding}" />
  488. <Setter Property="Background" Value="Transparent" />
  489. <Setter Property="BorderBrush" Value="Transparent" />
  490. <Setter Property="BorderThickness" Value="0" />
  491. <Setter Property="MinHeight" Value="{StaticResource DefaultControlHeight}" />
  492. <Setter Property="FocusVisualStyle" Value="{x:Null}" />
  493. <Setter Property="Template">
  494. <Setter.Value>
  495. <ControlTemplate TargetType="ComboBoxItem">
  496. <Border x:Name="Bd" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}">
  497. <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
  498. </Border>
  499. <ControlTemplate.Triggers>
  500. <MultiTrigger>
  501. <MultiTrigger.Conditions>
  502. <Condition Property="IsSelected" Value="False" />
  503. <Condition Property="IsMouseOver" Value="True" />
  504. </MultiTrigger.Conditions>
  505. <Setter Property="Background" TargetName="Bd" Value="{DynamicResource SecondaryRegionBrush}" />
  506. </MultiTrigger>
  507. <MultiTrigger>
  508. <MultiTrigger.Conditions>
  509. <Condition Property="IsSelected" Value="True" />
  510. </MultiTrigger.Conditions>
  511. <Setter Property="Background" TargetName="Bd" Value="{DynamicResource PrimaryBrush}" />
  512. <Setter Property="Foreground" Value="White" />
  513. </MultiTrigger>
  514. </ControlTemplate.Triggers>
  515. </ControlTemplate>
  516. </Setter.Value>
  517. </Setter>
  518. </Style>
  519. <!--下拉框基样式-->
  520. <Style x:Key="ComboBoxBaseStyle" BasedOn="{StaticResource InputElementBaseStyle}" TargetType="ComboBox">
  521. <Setter Property="ItemContainerStyle" Value="{StaticResource ComboBoxItemBaseStyle}" />
  522. <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
  523. <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
  524. <Setter Property="ScrollViewer.CanContentScroll" Value="true" />
  525. <Setter Property="ScrollViewer.PanningMode" Value="Both" />
  526. <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
  527. <Setter Property="Template" Value="{StaticResource ComboBoxTemplate}" />
  528. <Style.Triggers>
  529. <Trigger Property="IsEditable" Value="true">
  530. <Setter Property="IsTabStop" Value="false" />
  531. <Setter Property="Template" Value="{StaticResource ComboBoxEditableTemplate}" />
  532. </Trigger>
  533. </Style.Triggers>
  534. </Style>
  535. <!--下拉框扩展样式-->
  536. <Style x:Key="ComboBoxExtendBaseStyle" BasedOn="{StaticResource ComboBoxBaseStyle}" TargetType="ComboBox">
  537. <Setter Property="Height" Value="Auto" />
  538. <Setter Property="Template" Value="{StaticResource ComboBoxTopTemplate}" />
  539. <Setter Property="hc:InfoElement.Symbol" Value="●" />
  540. <Setter Property="hc:InfoElement.ContentHeight" Value="{x:Static system:Double.NaN}" />
  541. <Setter Property="hc:InfoElement.MinContentHeight" Value="{StaticResource DefaultControlHeight}" />
  542. <Style.Triggers>
  543. <MultiTrigger>
  544. <MultiTrigger.Conditions>
  545. <Condition Property="IsEditable" Value="False" />
  546. <Condition Property="hc:InfoElement.TitlePlacement" Value="Left" />
  547. </MultiTrigger.Conditions>
  548. <Setter Property="Template" Value="{StaticResource ComboBoxLeftTemplate}" />
  549. </MultiTrigger>
  550. <MultiTrigger>
  551. <MultiTrigger.Conditions>
  552. <Condition Property="IsEditable" Value="True" />
  553. <Condition Property="hc:InfoElement.TitlePlacement" Value="Top" />
  554. </MultiTrigger.Conditions>
  555. <Setter Property="Template" Value="{StaticResource ComboBoxEditableTopTemplate}" />
  556. </MultiTrigger>
  557. <MultiTrigger>
  558. <MultiTrigger.Conditions>
  559. <Condition Property="IsEditable" Value="True" />
  560. <Condition Property="hc:InfoElement.TitlePlacement" Value="Left" />
  561. </MultiTrigger.Conditions>
  562. <Setter Property="Template" Value="{StaticResource ComboBoxEditableLeftTemplate}" />
  563. </MultiTrigger>
  564. </Style.Triggers>
  565. </Style>
  566. <!--标题在顶部的Handy式下拉框模板-->
  567. <ControlTemplate x:Key="ComboBoxPlusTopTemplate" TargetType="hc:ComboBox">
  568. <Grid>
  569. <Grid.RowDefinitions>
  570. <RowDefinition Height="Auto" />
  571. <RowDefinition MinHeight="{Binding Path=(hc:InfoElement.MinContentHeight),RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=(hc:InfoElement.ContentHeight),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Double2GridLengthConverter}}" />
  572. </Grid.RowDefinitions>
  573. <DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheTop),RelativeSource={RelativeSource TemplatedParent}}">
  574. <ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}" />
  575. <TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}" />
  576. </DockPanel>
  577. <Grid x:Name="contentPanel" Grid.Row="1">
  578. <Grid.ColumnDefinitions>
  579. <ColumnDefinition />
  580. <ColumnDefinition Width="Auto" />
  581. <ColumnDefinition Width="Auto" />
  582. </Grid.ColumnDefinitions>
  583. <Border x:Name="border" Grid.ColumnSpan="3" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
  584. <TextBlock Grid.Column="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}" HorizontalAlignment="Stretch" Style="{StaticResource TextBlockDefaultThiLight}" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}" />
  585. <hc:ToggleBlock Grid.Column="2" Padding="1 0" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
  586. <hc:ToggleBlock.UnCheckedContent>
  587. <Path Data="{StaticResource DownGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  588. </hc:ToggleBlock.UnCheckedContent>
  589. <hc:ToggleBlock.CheckedContent>
  590. <Path Data="{StaticResource UpGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  591. </hc:ToggleBlock.CheckedContent>
  592. </hc:ToggleBlock>
  593. <hc:ToggleBlock Grid.Column="0" Grid.ColumnSpan="3" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" />
  594. <ContentPresenter Grid.Column="0" Margin="{TemplateBinding Padding}" x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
  595. <Button Height="Auto" Width="Auto" HorizontalContentAlignment="Left" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" hc:IconElement.Width="14" Command="interactivity:ControlCommands.Clear" Visibility="Collapsed" Name="ButtonClear" Grid.Column="1" Style="{StaticResource ButtonIcon}" Padding="0,0,2,0" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{Binding BorderBrush,ElementName=border}" />
  596. <Popup x:Name="PART_Popup" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  597. <Decorator Margin="8 0">
  598. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  599. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  600. <hc:ToggleBlock.CheckedContent>
  601. <ScrollViewer Margin="2">
  602. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  603. </ScrollViewer>
  604. </hc:ToggleBlock.CheckedContent>
  605. <hc:ToggleBlock.UnCheckedContent>
  606. <hc:Empty />
  607. </hc:ToggleBlock.UnCheckedContent>
  608. </hc:ToggleBlock>
  609. </Border>
  610. </Decorator>
  611. </Popup>
  612. </Grid>
  613. </Grid>
  614. <ControlTemplate.Triggers>
  615. <Trigger Property="HasItems" Value="false">
  616. <Setter Property="Height" TargetName="dropDownBorder" Value="95" />
  617. </Trigger>
  618. <Trigger Property="hc:DropDownElement.ConsistentWidth" Value="True">
  619. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  620. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  621. </Trigger>
  622. <Trigger Property="hc:DropDownElement.AutoWidth" Value="True">
  623. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{x:Static system:Double.MaxValue}" />
  624. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualHeight, ElementName=border}" />
  625. </Trigger>
  626. <MultiTrigger>
  627. <MultiTrigger.Conditions>
  628. <Condition Property="IsGrouping" Value="true" />
  629. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
  630. </MultiTrigger.Conditions>
  631. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  632. </MultiTrigger>
  633. <MultiTrigger>
  634. <MultiTrigger.Conditions>
  635. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  636. <Condition Property="IsOpen" Value="false" SourceName="PART_Popup" />
  637. </MultiTrigger.Conditions>
  638. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  639. </MultiTrigger>
  640. <MultiTrigger>
  641. <MultiTrigger.Conditions>
  642. <Condition Property="IsMouseOver" Value="true" SourceName="ButtonClear" />
  643. <Condition Property="IsOpen" Value="false" SourceName="PART_Popup" />
  644. </MultiTrigger.Conditions>
  645. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  646. </MultiTrigger>
  647. <MultiTrigger>
  648. <MultiTrigger.Conditions>
  649. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  650. <Condition Property="hc:InfoElement.ShowClearButton" Value="True" />
  651. </MultiTrigger.Conditions>
  652. <Setter Property="Visibility" Value="Visible" TargetName="ButtonClear" />
  653. </MultiTrigger>
  654. <MultiTrigger>
  655. <MultiTrigger.Conditions>
  656. <Condition Property="IsMouseOver" Value="true" SourceName="ButtonClear" />
  657. <Condition Property="hc:InfoElement.ShowClearButton" Value="True" />
  658. </MultiTrigger.Conditions>
  659. <Setter Property="Visibility" Value="Visible" TargetName="ButtonClear" />
  660. </MultiTrigger>
  661. <Trigger Property="IsOpen" Value="True" SourceName="PART_Popup">
  662. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  663. </Trigger>
  664. <Trigger Property="IsFocused" Value="True">
  665. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  666. </Trigger>
  667. <Trigger Property="IsEnabled" Value="false">
  668. <Setter Property="Opacity" Value="0.4" TargetName="contentPanel" />
  669. </Trigger>
  670. </ControlTemplate.Triggers>
  671. </ControlTemplate>
  672. <!--标题在左侧的Handy式下拉框模板-->
  673. <ControlTemplate x:Key="ComboBoxPlusLeftTemplate" TargetType="hc:ComboBox">
  674. <Grid MinHeight="{Binding Path=(hc:InfoElement.MinContentHeight),RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=(hc:InfoElement.ContentHeight),RelativeSource={RelativeSource TemplatedParent}}">
  675. <Grid.ColumnDefinitions>
  676. <ColumnDefinition Width="{Binding Path=(hc:InfoElement.TitleWidth),RelativeSource={RelativeSource TemplatedParent}}" />
  677. <ColumnDefinition />
  678. </Grid.ColumnDefinitions>
  679. <DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheLeft),RelativeSource={RelativeSource TemplatedParent}}">
  680. <ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}" />
  681. <TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}" />
  682. </DockPanel>
  683. <Grid x:Name="contentPanel" Grid.Column="1">
  684. <Grid.ColumnDefinitions>
  685. <ColumnDefinition />
  686. <ColumnDefinition Width="Auto" />
  687. <ColumnDefinition Width="Auto" />
  688. </Grid.ColumnDefinitions>
  689. <Border x:Name="border" Grid.ColumnSpan="3" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
  690. <TextBlock Grid.Column="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}" HorizontalAlignment="Stretch" Style="{StaticResource TextBlockDefaultThiLight}" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}" />
  691. <hc:ToggleBlock Grid.Column="2" Padding="1 0" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
  692. <hc:ToggleBlock.UnCheckedContent>
  693. <Path Data="{StaticResource DownGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  694. </hc:ToggleBlock.UnCheckedContent>
  695. <hc:ToggleBlock.CheckedContent>
  696. <Path Data="{StaticResource UpGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  697. </hc:ToggleBlock.CheckedContent>
  698. </hc:ToggleBlock>
  699. <hc:ToggleBlock Grid.Column="0" Grid.ColumnSpan="3" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" />
  700. <ContentPresenter Grid.Column="0" Margin="{TemplateBinding Padding}" x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
  701. <Button Height="Auto" Width="Auto" HorizontalContentAlignment="Left" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" hc:IconElement.Width="14" Command="interactivity:ControlCommands.Clear" Visibility="Collapsed" Name="ButtonClear" Grid.Column="1" Style="{StaticResource ButtonIcon}" Padding="0,0,2,0" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{Binding BorderBrush,ElementName=border}" />
  702. <Popup x:Name="PART_Popup" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  703. <Decorator Margin="8 0">
  704. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  705. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  706. <hc:ToggleBlock.CheckedContent>
  707. <ScrollViewer Margin="2">
  708. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  709. </ScrollViewer>
  710. </hc:ToggleBlock.CheckedContent>
  711. <hc:ToggleBlock.UnCheckedContent>
  712. <hc:Empty />
  713. </hc:ToggleBlock.UnCheckedContent>
  714. </hc:ToggleBlock>
  715. </Border>
  716. </Decorator>
  717. </Popup>
  718. </Grid>
  719. </Grid>
  720. <ControlTemplate.Triggers>
  721. <Trigger Property="HasItems" Value="false">
  722. <Setter Property="Height" TargetName="dropDownBorder" Value="95" />
  723. </Trigger>
  724. <Trigger Property="hc:DropDownElement.ConsistentWidth" Value="True">
  725. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  726. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  727. </Trigger>
  728. <Trigger Property="hc:DropDownElement.AutoWidth" Value="True">
  729. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{x:Static system:Double.MaxValue}" />
  730. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualHeight, ElementName=border}" />
  731. </Trigger>
  732. <MultiTrigger>
  733. <MultiTrigger.Conditions>
  734. <Condition Property="IsGrouping" Value="true" />
  735. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
  736. </MultiTrigger.Conditions>
  737. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  738. </MultiTrigger>
  739. <MultiTrigger>
  740. <MultiTrigger.Conditions>
  741. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  742. <Condition Property="IsOpen" Value="false" SourceName="PART_Popup" />
  743. </MultiTrigger.Conditions>
  744. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  745. </MultiTrigger>
  746. <MultiTrigger>
  747. <MultiTrigger.Conditions>
  748. <Condition Property="IsMouseOver" Value="true" SourceName="ButtonClear" />
  749. <Condition Property="IsOpen" Value="false" SourceName="PART_Popup" />
  750. </MultiTrigger.Conditions>
  751. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  752. </MultiTrigger>
  753. <MultiTrigger>
  754. <MultiTrigger.Conditions>
  755. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  756. <Condition Property="hc:InfoElement.ShowClearButton" Value="True" />
  757. </MultiTrigger.Conditions>
  758. <Setter Property="Visibility" Value="Visible" TargetName="ButtonClear" />
  759. </MultiTrigger>
  760. <MultiTrigger>
  761. <MultiTrigger.Conditions>
  762. <Condition Property="IsMouseOver" Value="true" SourceName="ButtonClear" />
  763. <Condition Property="hc:InfoElement.ShowClearButton" Value="True" />
  764. </MultiTrigger.Conditions>
  765. <Setter Property="Visibility" Value="Visible" TargetName="ButtonClear" />
  766. </MultiTrigger>
  767. <Trigger Property="IsOpen" Value="True" SourceName="PART_Popup">
  768. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  769. </Trigger>
  770. <Trigger Property="IsFocused" Value="True">
  771. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  772. </Trigger>
  773. <Trigger Property="IsEnabled" Value="false">
  774. <Setter Property="Opacity" Value="0.4" TargetName="contentPanel" />
  775. </Trigger>
  776. </ControlTemplate.Triggers>
  777. </ControlTemplate>
  778. <!--标题在顶部的Handy式可编辑下拉框模板-->
  779. <ControlTemplate x:Key="ComboBoxPlusEditableTopTemplate" TargetType="hc:ComboBox">
  780. <Grid>
  781. <Grid.RowDefinitions>
  782. <RowDefinition Height="Auto" />
  783. <RowDefinition MinHeight="{Binding Path=(hc:InfoElement.MinContentHeight),RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=(hc:InfoElement.ContentHeight),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Double2GridLengthConverter}}" />
  784. </Grid.RowDefinitions>
  785. <DockPanel Grid.ColumnSpan="2" LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheTop),RelativeSource={RelativeSource TemplatedParent}}">
  786. <ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}" />
  787. <TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}" />
  788. </DockPanel>
  789. <Grid x:Name="contentPanel" Grid.Row="1">
  790. <Grid.ColumnDefinitions>
  791. <ColumnDefinition />
  792. <ColumnDefinition Width="Auto" />
  793. <ColumnDefinition Width="Auto" />
  794. </Grid.ColumnDefinitions>
  795. <Border x:Name="border" Grid.ColumnSpan="3" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
  796. <hc:ToggleBlock Grid.Column="2" Padding="1,0" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
  797. <hc:ToggleBlock.UnCheckedContent>
  798. <Path Data="{StaticResource DownGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  799. </hc:ToggleBlock.UnCheckedContent>
  800. <hc:ToggleBlock.CheckedContent>
  801. <Path Data="{StaticResource UpGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  802. </hc:ToggleBlock.CheckedContent>
  803. </hc:ToggleBlock>
  804. <TextBlock VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}" HorizontalAlignment="Stretch" Style="{StaticResource TextBlockDefaultThiLight}" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}" />
  805. <TextBox x:Name="PART_EditableTextBox" Grid.Column="0" Padding="{TemplateBinding Padding}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
  806. <Button Height="Auto" Width="Auto" HorizontalContentAlignment="Left" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" hc:IconElement.Width="14" Command="interactivity:ControlCommands.Clear" Visibility="Collapsed" Name="ButtonClear" Grid.Column="1" Style="{StaticResource ButtonIcon}" Padding="0,0,2,0" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{Binding BorderBrush,ElementName=border}" />
  807. <Popup x:Name="PART_Popup" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  808. <Decorator Margin="8 0">
  809. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  810. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  811. <hc:ToggleBlock.CheckedContent>
  812. <ScrollViewer Margin="2">
  813. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  814. </ScrollViewer>
  815. </hc:ToggleBlock.CheckedContent>
  816. <hc:ToggleBlock.UnCheckedContent>
  817. <hc:Empty />
  818. </hc:ToggleBlock.UnCheckedContent>
  819. </hc:ToggleBlock>
  820. </Border>
  821. </Decorator>
  822. </Popup>
  823. </Grid>
  824. </Grid>
  825. <ControlTemplate.Triggers>
  826. <Trigger Property="HasItems" Value="false">
  827. <Setter Property="Height" TargetName="dropDownBorder" Value="95" />
  828. </Trigger>
  829. <Trigger Property="hc:DropDownElement.ConsistentWidth" Value="True">
  830. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  831. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  832. </Trigger>
  833. <Trigger Property="hc:DropDownElement.AutoWidth" Value="True">
  834. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{x:Static system:Double.MaxValue}" />
  835. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualHeight, ElementName=border}" />
  836. </Trigger>
  837. <MultiTrigger>
  838. <MultiTrigger.Conditions>
  839. <Condition Property="IsGrouping" Value="true" />
  840. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
  841. </MultiTrigger.Conditions>
  842. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  843. </MultiTrigger>
  844. <MultiTrigger>
  845. <MultiTrigger.Conditions>
  846. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  847. <Condition Property="IsFocused" Value="false" SourceName="PART_EditableTextBox" />
  848. </MultiTrigger.Conditions>
  849. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  850. </MultiTrigger>
  851. <MultiTrigger>
  852. <MultiTrigger.Conditions>
  853. <Condition Property="IsMouseOver" Value="true" SourceName="ButtonClear" />
  854. <Condition Property="IsOpen" Value="false" SourceName="PART_Popup" />
  855. </MultiTrigger.Conditions>
  856. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  857. </MultiTrigger>
  858. <MultiTrigger>
  859. <MultiTrigger.Conditions>
  860. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  861. <Condition Property="hc:InfoElement.ShowClearButton" Value="True" />
  862. </MultiTrigger.Conditions>
  863. <Setter Property="Visibility" Value="Visible" TargetName="ButtonClear" />
  864. </MultiTrigger>
  865. <MultiTrigger>
  866. <MultiTrigger.Conditions>
  867. <Condition Property="IsMouseOver" Value="true" SourceName="ButtonClear" />
  868. <Condition Property="hc:InfoElement.ShowClearButton" Value="True" />
  869. </MultiTrigger.Conditions>
  870. <Setter Property="Visibility" Value="Visible" TargetName="ButtonClear" />
  871. </MultiTrigger>
  872. <Trigger Property="IsFocused" Value="True" SourceName="PART_EditableTextBox">
  873. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  874. </Trigger>
  875. <Trigger Property="IsEnabled" Value="false">
  876. <Setter Property="Opacity" Value="0.4" TargetName="contentPanel" />
  877. </Trigger>
  878. </ControlTemplate.Triggers>
  879. </ControlTemplate>
  880. <ControlTemplate x:Key="ComboBoxPlusEditableTopAutoCompleteTemplate" TargetType="hc:ComboBox">
  881. <Grid>
  882. <Grid.RowDefinitions>
  883. <RowDefinition Height="Auto" />
  884. <RowDefinition MinHeight="{Binding Path=(hc:InfoElement.MinContentHeight),RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=(hc:InfoElement.ContentHeight),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Double2GridLengthConverter}}" />
  885. </Grid.RowDefinitions>
  886. <DockPanel Grid.ColumnSpan="2" LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheTop),RelativeSource={RelativeSource TemplatedParent}}">
  887. <ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}" />
  888. <TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}" />
  889. </DockPanel>
  890. <Grid x:Name="contentPanel" Grid.Row="1">
  891. <Grid.ColumnDefinitions>
  892. <ColumnDefinition />
  893. <ColumnDefinition Width="Auto" />
  894. <ColumnDefinition Width="Auto" />
  895. </Grid.ColumnDefinitions>
  896. <Border x:Name="border" Grid.ColumnSpan="3" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
  897. <hc:ToggleBlock Grid.Column="2" Padding="1,0" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
  898. <hc:ToggleBlock.UnCheckedContent>
  899. <Path Data="{StaticResource DownGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  900. </hc:ToggleBlock.UnCheckedContent>
  901. <hc:ToggleBlock.CheckedContent>
  902. <Path Data="{StaticResource UpGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  903. </hc:ToggleBlock.CheckedContent>
  904. </hc:ToggleBlock>
  905. <TextBlock VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}" HorizontalAlignment="Stretch" Style="{StaticResource TextBlockDefaultThiLight}" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}" />
  906. <TextBox x:Name="PART_EditableTextBox" Grid.Column="0" Padding="{TemplateBinding Padding}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
  907. <Button Height="Auto" Width="Auto" HorizontalContentAlignment="Left" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" hc:IconElement.Width="14" Command="interactivity:ControlCommands.Clear" Visibility="Collapsed" Name="ButtonClear" Grid.Column="1" Style="{StaticResource ButtonIcon}" Padding="0,0,2,0" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{Binding BorderBrush,ElementName=border}" />
  908. <Popup x:Name="PART_Popup" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  909. <Decorator Margin="8 0">
  910. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  911. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  912. <hc:ToggleBlock.CheckedContent>
  913. <ScrollViewer Margin="2">
  914. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  915. </ScrollViewer>
  916. </hc:ToggleBlock.CheckedContent>
  917. <hc:ToggleBlock.UnCheckedContent>
  918. <hc:Empty />
  919. </hc:ToggleBlock.UnCheckedContent>
  920. </hc:ToggleBlock>
  921. </Border>
  922. </Decorator>
  923. </Popup>
  924. <Popup x:Name="PART_Popup_AutoComplete" PlacementTarget="{Binding ElementName=border}" StaysOpen="False" AllowsTransparency="true" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  925. <Decorator Margin="8 0">
  926. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder_AutoComplete" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  927. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  928. <hc:ToggleBlock.CheckedContent>
  929. <ScrollViewer Margin="2">
  930. <StackPanel Name="PART_AutoCompletePanel" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  931. </ScrollViewer>
  932. </hc:ToggleBlock.CheckedContent>
  933. <hc:ToggleBlock.UnCheckedContent>
  934. <hc:Empty />
  935. </hc:ToggleBlock.UnCheckedContent>
  936. </hc:ToggleBlock>
  937. </Border>
  938. </Decorator>
  939. </Popup>
  940. </Grid>
  941. </Grid>
  942. <ControlTemplate.Triggers>
  943. <Trigger Property="HasItems" Value="false">
  944. <Setter Property="Height" TargetName="dropDownBorder" Value="95" />
  945. <Setter Property="Height" TargetName="dropDownBorder_AutoComplete" Value="95" />
  946. </Trigger>
  947. <Trigger Property="hc:DropDownElement.ConsistentWidth" Value="True">
  948. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  949. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  950. <Setter Property="MaxWidth" TargetName="dropDownBorder_AutoComplete" Value="{Binding ActualWidth, ElementName=border}" />
  951. <Setter Property="MinWidth" TargetName="dropDownBorder_AutoComplete" Value="{Binding ActualWidth, ElementName=border}" />
  952. </Trigger>
  953. <Trigger Property="hc:DropDownElement.AutoWidth" Value="True">
  954. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{x:Static system:Double.MaxValue}" />
  955. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualHeight, ElementName=border}" />
  956. <Setter Property="MaxWidth" TargetName="dropDownBorder_AutoComplete" Value="{x:Static system:Double.MaxValue}" />
  957. <Setter Property="MinWidth" TargetName="dropDownBorder_AutoComplete" Value="{Binding ActualHeight, ElementName=border}" />
  958. </Trigger>
  959. <MultiTrigger>
  960. <MultiTrigger.Conditions>
  961. <Condition Property="IsGrouping" Value="true" />
  962. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
  963. </MultiTrigger.Conditions>
  964. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  965. </MultiTrigger>
  966. <MultiTrigger>
  967. <MultiTrigger.Conditions>
  968. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  969. <Condition Property="IsFocused" Value="false" SourceName="PART_EditableTextBox" />
  970. </MultiTrigger.Conditions>
  971. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  972. </MultiTrigger>
  973. <MultiTrigger>
  974. <MultiTrigger.Conditions>
  975. <Condition Property="IsMouseOver" Value="true" SourceName="ButtonClear" />
  976. <Condition Property="IsOpen" Value="false" SourceName="PART_Popup" />
  977. </MultiTrigger.Conditions>
  978. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  979. </MultiTrigger>
  980. <MultiTrigger>
  981. <MultiTrigger.Conditions>
  982. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  983. <Condition Property="hc:InfoElement.ShowClearButton" Value="True" />
  984. </MultiTrigger.Conditions>
  985. <Setter Property="Visibility" Value="Visible" TargetName="ButtonClear" />
  986. </MultiTrigger>
  987. <MultiTrigger>
  988. <MultiTrigger.Conditions>
  989. <Condition Property="IsMouseOver" Value="true" SourceName="ButtonClear" />
  990. <Condition Property="hc:InfoElement.ShowClearButton" Value="True" />
  991. </MultiTrigger.Conditions>
  992. <Setter Property="Visibility" Value="Visible" TargetName="ButtonClear" />
  993. </MultiTrigger>
  994. <Trigger Property="IsFocused" Value="True" SourceName="PART_EditableTextBox">
  995. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  996. </Trigger>
  997. <Trigger Property="IsEnabled" Value="false">
  998. <Setter Property="Opacity" Value="0.4" TargetName="contentPanel" />
  999. </Trigger>
  1000. </ControlTemplate.Triggers>
  1001. </ControlTemplate>
  1002. <!--标题在左侧的Handy式可编辑下拉框模板-->
  1003. <ControlTemplate x:Key="ComboBoxPlusEditableLeftTemplate" TargetType="hc:ComboBox">
  1004. <Grid MinHeight="{Binding Path=(hc:InfoElement.MinContentHeight),RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=(hc:InfoElement.ContentHeight),RelativeSource={RelativeSource TemplatedParent}}">
  1005. <Grid.ColumnDefinitions>
  1006. <ColumnDefinition Width="{Binding Path=(hc:InfoElement.TitleWidth),RelativeSource={RelativeSource TemplatedParent}}" />
  1007. <ColumnDefinition />
  1008. </Grid.ColumnDefinitions>
  1009. <DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheLeft),RelativeSource={RelativeSource TemplatedParent}}">
  1010. <ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}" />
  1011. <TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}" />
  1012. </DockPanel>
  1013. <Grid x:Name="contentPanel" Grid.Column="1">
  1014. <Grid.ColumnDefinitions>
  1015. <ColumnDefinition />
  1016. <ColumnDefinition Width="Auto" />
  1017. <ColumnDefinition Width="Auto" />
  1018. </Grid.ColumnDefinitions>
  1019. <Border x:Name="border" Grid.ColumnSpan="3" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
  1020. <hc:ToggleBlock Grid.Column="2" Padding="1,0" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
  1021. <hc:ToggleBlock.UnCheckedContent>
  1022. <Path Data="{StaticResource DownGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  1023. </hc:ToggleBlock.UnCheckedContent>
  1024. <hc:ToggleBlock.CheckedContent>
  1025. <Path Data="{StaticResource UpGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  1026. </hc:ToggleBlock.CheckedContent>
  1027. </hc:ToggleBlock>
  1028. <TextBlock VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}" HorizontalAlignment="Stretch" Style="{StaticResource TextBlockDefaultThiLight}" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}" />
  1029. <TextBox x:Name="PART_EditableTextBox" Grid.Column="0" Padding="{TemplateBinding Padding}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
  1030. <Button Height="Auto" Width="Auto" HorizontalContentAlignment="Left" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" hc:IconElement.Width="14" Command="interactivity:ControlCommands.Clear" Visibility="Collapsed" Name="ButtonClear" Grid.Column="1" Style="{StaticResource ButtonIcon}" Padding="0,0,2,0" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{Binding BorderBrush,ElementName=border}" />
  1031. <Popup x:Name="PART_Popup" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  1032. <Decorator Margin="8 0">
  1033. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  1034. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  1035. <hc:ToggleBlock.CheckedContent>
  1036. <ScrollViewer Margin="2">
  1037. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  1038. </ScrollViewer>
  1039. </hc:ToggleBlock.CheckedContent>
  1040. <hc:ToggleBlock.UnCheckedContent>
  1041. <hc:Empty />
  1042. </hc:ToggleBlock.UnCheckedContent>
  1043. </hc:ToggleBlock>
  1044. </Border>
  1045. </Decorator>
  1046. </Popup>
  1047. </Grid>
  1048. </Grid>
  1049. <ControlTemplate.Triggers>
  1050. <Trigger Property="HasItems" Value="false">
  1051. <Setter Property="Height" TargetName="dropDownBorder" Value="95" />
  1052. </Trigger>
  1053. <Trigger Property="hc:DropDownElement.ConsistentWidth" Value="True">
  1054. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  1055. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  1056. </Trigger>
  1057. <Trigger Property="hc:DropDownElement.AutoWidth" Value="True">
  1058. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{x:Static system:Double.MaxValue}" />
  1059. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualHeight, ElementName=border}" />
  1060. </Trigger>
  1061. <MultiTrigger>
  1062. <MultiTrigger.Conditions>
  1063. <Condition Property="IsGrouping" Value="true" />
  1064. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
  1065. </MultiTrigger.Conditions>
  1066. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  1067. </MultiTrigger>
  1068. <MultiTrigger>
  1069. <MultiTrigger.Conditions>
  1070. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  1071. <Condition Property="IsFocused" Value="false" SourceName="PART_EditableTextBox" />
  1072. </MultiTrigger.Conditions>
  1073. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  1074. </MultiTrigger>
  1075. <MultiTrigger>
  1076. <MultiTrigger.Conditions>
  1077. <Condition Property="IsMouseOver" Value="true" SourceName="ButtonClear" />
  1078. <Condition Property="IsOpen" Value="false" SourceName="PART_Popup" />
  1079. </MultiTrigger.Conditions>
  1080. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  1081. </MultiTrigger>
  1082. <MultiTrigger>
  1083. <MultiTrigger.Conditions>
  1084. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  1085. <Condition Property="hc:InfoElement.ShowClearButton" Value="True" />
  1086. </MultiTrigger.Conditions>
  1087. <Setter Property="Visibility" Value="Visible" TargetName="ButtonClear" />
  1088. </MultiTrigger>
  1089. <MultiTrigger>
  1090. <MultiTrigger.Conditions>
  1091. <Condition Property="IsMouseOver" Value="true" SourceName="ButtonClear" />
  1092. <Condition Property="hc:InfoElement.ShowClearButton" Value="True" />
  1093. </MultiTrigger.Conditions>
  1094. <Setter Property="Visibility" Value="Visible" TargetName="ButtonClear" />
  1095. </MultiTrigger>
  1096. <Trigger Property="IsFocused" Value="True" SourceName="PART_EditableTextBox">
  1097. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  1098. </Trigger>
  1099. <Trigger Property="IsEnabled" Value="false">
  1100. <Setter Property="Opacity" Value="0.4" TargetName="contentPanel" />
  1101. </Trigger>
  1102. </ControlTemplate.Triggers>
  1103. </ControlTemplate>
  1104. <ControlTemplate x:Key="ComboBoxPlusEditableLeftAutoCompleteTemplate" TargetType="hc:ComboBox">
  1105. <Grid MinHeight="{Binding Path=(hc:InfoElement.MinContentHeight),RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=(hc:InfoElement.ContentHeight),RelativeSource={RelativeSource TemplatedParent}}">
  1106. <Grid.ColumnDefinitions>
  1107. <ColumnDefinition Width="{Binding Path=(hc:InfoElement.TitleWidth),RelativeSource={RelativeSource TemplatedParent}}" />
  1108. <ColumnDefinition />
  1109. </Grid.ColumnDefinitions>
  1110. <DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheLeft),RelativeSource={RelativeSource TemplatedParent}}">
  1111. <ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}" />
  1112. <TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}" />
  1113. </DockPanel>
  1114. <Grid x:Name="contentPanel" Grid.Column="1">
  1115. <Grid.ColumnDefinitions>
  1116. <ColumnDefinition />
  1117. <ColumnDefinition Width="Auto" />
  1118. <ColumnDefinition Width="Auto" />
  1119. </Grid.ColumnDefinitions>
  1120. <Border x:Name="border" Grid.ColumnSpan="3" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" />
  1121. <hc:ToggleBlock Grid.Column="2" Padding="1,0" Background="Transparent" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ToggleGesture="LeftClick" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
  1122. <hc:ToggleBlock.UnCheckedContent>
  1123. <Path Data="{StaticResource DownGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  1124. </hc:ToggleBlock.UnCheckedContent>
  1125. <hc:ToggleBlock.CheckedContent>
  1126. <Path Data="{StaticResource UpGeometry}" VerticalAlignment="Center" HorizontalAlignment="Right" Width="14" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" Margin="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
  1127. </hc:ToggleBlock.CheckedContent>
  1128. </hc:ToggleBlock>
  1129. <TextBlock VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}" HorizontalAlignment="Stretch" Style="{StaticResource TextBlockDefaultThiLight}" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}" />
  1130. <TextBox x:Name="PART_EditableTextBox" Grid.Column="0" Padding="{TemplateBinding Padding}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
  1131. <Button Height="Auto" Width="Auto" HorizontalContentAlignment="Left" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" hc:IconElement.Width="14" Command="interactivity:ControlCommands.Clear" Visibility="Collapsed" Name="ButtonClear" Grid.Column="1" Style="{StaticResource ButtonIcon}" Padding="0,0,2,0" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{Binding BorderBrush,ElementName=border}" />
  1132. <Popup x:Name="PART_Popup" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  1133. <Decorator Margin="8 0">
  1134. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  1135. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  1136. <hc:ToggleBlock.CheckedContent>
  1137. <ScrollViewer Margin="2">
  1138. <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  1139. </ScrollViewer>
  1140. </hc:ToggleBlock.CheckedContent>
  1141. <hc:ToggleBlock.UnCheckedContent>
  1142. <hc:Empty />
  1143. </hc:ToggleBlock.UnCheckedContent>
  1144. </hc:ToggleBlock>
  1145. </Border>
  1146. </Decorator>
  1147. </Popup>
  1148. <Popup x:Name="PART_Popup_AutoComplete" PlacementTarget="{Binding ElementName=border}" AllowsTransparency="true" PopupAnimation="{StaticResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
  1149. <Decorator Margin="8 0">
  1150. <Border BorderThickness="0,1,0,0" Effect="{StaticResource EffectShadow2}" Margin="0,0,0,8" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" x:Name="dropDownBorder_AutoComplete" MinWidth="{Binding ActualWidth, ElementName=border}" MaxHeight="{TemplateBinding MaxDropDownHeight}" BorderBrush="{DynamicResource BorderBrush}" Background="{DynamicResource RegionBrush}">
  1151. <hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  1152. <hc:ToggleBlock.CheckedContent>
  1153. <ScrollViewer Margin="2">
  1154. <StackPanel Name="PART_AutoCompletePanel" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  1155. </ScrollViewer>
  1156. </hc:ToggleBlock.CheckedContent>
  1157. <hc:ToggleBlock.UnCheckedContent>
  1158. <hc:Empty />
  1159. </hc:ToggleBlock.UnCheckedContent>
  1160. </hc:ToggleBlock>
  1161. </Border>
  1162. </Decorator>
  1163. </Popup>
  1164. </Grid>
  1165. </Grid>
  1166. <ControlTemplate.Triggers>
  1167. <Trigger Property="HasItems" Value="false">
  1168. <Setter Property="Height" TargetName="dropDownBorder" Value="95" />
  1169. <Setter Property="Height" TargetName="dropDownBorder_AutoComplete" Value="95" />
  1170. </Trigger>
  1171. <Trigger Property="hc:DropDownElement.ConsistentWidth" Value="True">
  1172. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  1173. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualWidth, ElementName=border}" />
  1174. <Setter Property="MaxWidth" TargetName="dropDownBorder_AutoComplete" Value="{Binding ActualWidth, ElementName=border}" />
  1175. <Setter Property="MinWidth" TargetName="dropDownBorder_AutoComplete" Value="{Binding ActualWidth, ElementName=border}" />
  1176. </Trigger>
  1177. <Trigger Property="hc:DropDownElement.AutoWidth" Value="True">
  1178. <Setter Property="MaxWidth" TargetName="dropDownBorder" Value="{x:Static system:Double.MaxValue}" />
  1179. <Setter Property="MinWidth" TargetName="dropDownBorder" Value="{Binding ActualHeight, ElementName=border}" />
  1180. <Setter Property="MaxWidth" TargetName="dropDownBorder_AutoComplete" Value="{x:Static system:Double.MaxValue}" />
  1181. <Setter Property="MinWidth" TargetName="dropDownBorder_AutoComplete" Value="{Binding ActualHeight, ElementName=border}" />
  1182. </Trigger>
  1183. <MultiTrigger>
  1184. <MultiTrigger.Conditions>
  1185. <Condition Property="IsGrouping" Value="true" />
  1186. <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
  1187. </MultiTrigger.Conditions>
  1188. <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
  1189. </MultiTrigger>
  1190. <MultiTrigger>
  1191. <MultiTrigger.Conditions>
  1192. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  1193. <Condition Property="IsFocused" Value="false" SourceName="PART_EditableTextBox" />
  1194. </MultiTrigger.Conditions>
  1195. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  1196. </MultiTrigger>
  1197. <MultiTrigger>
  1198. <MultiTrigger.Conditions>
  1199. <Condition Property="IsMouseOver" Value="true" SourceName="ButtonClear" />
  1200. <Condition Property="IsOpen" Value="false" SourceName="PART_Popup" />
  1201. </MultiTrigger.Conditions>
  1202. <Setter Property="BorderBrush" Value="{DynamicResource SecondaryBorderBrush}" />
  1203. </MultiTrigger>
  1204. <MultiTrigger>
  1205. <MultiTrigger.Conditions>
  1206. <Condition Property="IsMouseOver" Value="true" SourceName="contentPanel" />
  1207. <Condition Property="hc:InfoElement.ShowClearButton" Value="True" />
  1208. </MultiTrigger.Conditions>
  1209. <Setter Property="Visibility" Value="Visible" TargetName="ButtonClear" />
  1210. </MultiTrigger>
  1211. <MultiTrigger>
  1212. <MultiTrigger.Conditions>
  1213. <Condition Property="IsMouseOver" Value="true" SourceName="ButtonClear" />
  1214. <Condition Property="hc:InfoElement.ShowClearButton" Value="True" />
  1215. </MultiTrigger.Conditions>
  1216. <Setter Property="Visibility" Value="Visible" TargetName="ButtonClear" />
  1217. </MultiTrigger>
  1218. <Trigger Property="IsFocused" Value="True" SourceName="PART_EditableTextBox">
  1219. <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
  1220. </Trigger>
  1221. <Trigger Property="IsEnabled" Value="false">
  1222. <Setter Property="Opacity" Value="0.4" TargetName="contentPanel" />
  1223. </Trigger>
  1224. </ControlTemplate.Triggers>
  1225. </ControlTemplate>
  1226. <!--Handy式下拉框样式-->
  1227. <Style x:Key="ComboBoxPlusBaseStyle" BasedOn="{StaticResource ComboBoxExtendBaseStyle}" TargetType="hc:ComboBox">
  1228. <Setter Property="Template" Value="{StaticResource ComboBoxPlusTopTemplate}" />
  1229. <Style.Triggers>
  1230. <MultiTrigger>
  1231. <MultiTrigger.Conditions>
  1232. <Condition Property="IsEditable" Value="False" />
  1233. <Condition Property="hc:InfoElement.TitlePlacement" Value="Left" />
  1234. </MultiTrigger.Conditions>
  1235. <Setter Property="Template" Value="{StaticResource ComboBoxPlusLeftTemplate}" />
  1236. </MultiTrigger>
  1237. <MultiTrigger>
  1238. <MultiTrigger.Conditions>
  1239. <Condition Property="IsEditable" Value="True" />
  1240. <Condition Property="hc:InfoElement.TitlePlacement" Value="Top" />
  1241. </MultiTrigger.Conditions>
  1242. <Setter Property="Template" Value="{StaticResource ComboBoxPlusEditableTopTemplate}" />
  1243. </MultiTrigger>
  1244. <MultiTrigger>
  1245. <MultiTrigger.Conditions>
  1246. <Condition Property="IsEditable" Value="True" />
  1247. <Condition Property="hc:InfoElement.TitlePlacement" Value="Top" />
  1248. <Condition Property="AutoComplete" Value="True" />
  1249. </MultiTrigger.Conditions>
  1250. <Setter Property="Template" Value="{StaticResource ComboBoxPlusEditableTopAutoCompleteTemplate}" />
  1251. </MultiTrigger>
  1252. <MultiTrigger>
  1253. <MultiTrigger.Conditions>
  1254. <Condition Property="IsEditable" Value="True" />
  1255. <Condition Property="hc:InfoElement.TitlePlacement" Value="Left" />
  1256. </MultiTrigger.Conditions>
  1257. <Setter Property="Template" Value="{StaticResource ComboBoxPlusEditableLeftTemplate}" />
  1258. </MultiTrigger>
  1259. <MultiTrigger>
  1260. <MultiTrigger.Conditions>
  1261. <Condition Property="IsEditable" Value="True" />
  1262. <Condition Property="hc:InfoElement.TitlePlacement" Value="Left" />
  1263. <Condition Property="AutoComplete" Value="True" />
  1264. </MultiTrigger.Conditions>
  1265. <Setter Property="Template" Value="{StaticResource ComboBoxPlusEditableLeftAutoCompleteTemplate}" />
  1266. </MultiTrigger>
  1267. </Style.Triggers>
  1268. </Style>
  1269. </ResourceDictionary>