WritableComboBox.xaml 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <UserControl x:Class="ComPDFKit.Controls.Common.BaseControl.WritableComboBox"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:local="clr-namespace:ComPDFKit.Controls.Common.BaseControl"
  7. mc:Ignorable="d"
  8. d:DesignHeight="300" d:DesignWidth="300"
  9. IsEnabledChanged="UserControl_IsEnabledChanged"
  10. Loaded="UserControl_Loaded">
  11. <UserControl.Resources>
  12. <BooleanToVisibilityConverter x:Key="BoolToVisible" />
  13. <SolidColorBrush x:Key="color.field.border.focus">#1770F4</SolidColorBrush>
  14. <SolidColorBrush x:Key="color.field.border.error">#F3465B</SolidColorBrush>
  15. <DropShadowEffect
  16. x:Key="shadow.error.s"
  17. BlurRadius="4"
  18. Direction="0"
  19. Opacity=" 0.4"
  20. ShadowDepth="0"
  21. Color="#F3465B" />
  22. <DropShadowEffect
  23. x:Key="shadow.blue-0-4"
  24. BlurRadius="4"
  25. Direction="270"
  26. Opacity="0.4"
  27. ShadowDepth="0"
  28. Color="#1770F4" />
  29. <Style x:Key="WarkTextBoxStyle" TargetType="{x:Type TextBox}">
  30. <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" />
  31. <Setter Property="BorderBrush" Value="#FFABADB3" />
  32. <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
  33. <Setter Property="BorderThickness" Value="1" />
  34. <Setter Property="KeyboardNavigation.TabNavigation" Value="None" />
  35. <Setter Property="HorizontalContentAlignment" Value="Left" />
  36. <Setter Property="FocusVisualStyle" Value="{x:Null}" />
  37. <Setter Property="AllowDrop" Value="True" />
  38. <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst" />
  39. <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
  40. <Setter Property="Template">
  41. <Setter.Value>
  42. <ControlTemplate TargetType="{x:Type TextBox}">
  43. <Border
  44. x:Name="border"
  45. Background="{TemplateBinding Background}"
  46. BorderBrush="{TemplateBinding BorderBrush}"
  47. BorderThickness="{TemplateBinding BorderThickness}"
  48. SnapsToDevicePixels="True">
  49. <Grid>
  50. <ScrollViewer
  51. x:Name="PART_ContentHost"
  52. Focusable="False"
  53. HorizontalScrollBarVisibility="Hidden"
  54. VerticalScrollBarVisibility="Hidden" />
  55. <TextBlock
  56. x:Name="WARKTEXT"
  57. Padding="8,6,0,0"
  58. Foreground="#7F2F2F2F"
  59. Text="{TemplateBinding Tag}"
  60. Visibility="Collapsed" />
  61. </Grid>
  62. </Border>
  63. <ControlTemplate.Triggers>
  64. <Trigger Property="IsEnabled" Value="False">
  65. <Setter TargetName="border" Property="Opacity" Value="0.56" />
  66. </Trigger>
  67. <Trigger Property="IsMouseOver" Value="True">
  68. <Setter TargetName="border" Property="BorderBrush" Value="#FF7EB4EA" />
  69. </Trigger>
  70. <Trigger Property="IsKeyboardFocused" Value="True">
  71. <Setter TargetName="border" Property="BorderBrush" Value="#FF569DE5" />
  72. </Trigger>
  73. <MultiTrigger>
  74. <MultiTrigger.Conditions>
  75. <Condition Property="Text" Value="" />
  76. <!--<Condition Property="IsFocused" Value="False" />-->
  77. </MultiTrigger.Conditions>
  78. <Setter TargetName="WARKTEXT" Property="Visibility" Value="Visible" />
  79. </MultiTrigger>
  80. </ControlTemplate.Triggers>
  81. </ControlTemplate>
  82. </Setter.Value>
  83. </Setter>
  84. <Style.Triggers>
  85. <MultiTrigger>
  86. <MultiTrigger.Conditions>
  87. <Condition Property="IsInactiveSelectionHighlightEnabled" Value="True" />
  88. <Condition Property="IsSelectionActive" Value="False" />
  89. </MultiTrigger.Conditions>
  90. <Setter Property="SelectionBrush" Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightBrushKey}}" />
  91. </MultiTrigger>
  92. </Style.Triggers>
  93. </Style>
  94. </UserControl.Resources>
  95. <Grid Background="White">
  96. <ComboBox
  97. x:Name="writableComboBox"
  98. Grid.Column="1"
  99. MinWidth="58"
  100. MinHeight="26"
  101. VerticalContentAlignment="Center"
  102. Background="White"
  103. BorderBrush="#B4B4B4"
  104. FontFamily="
  105. Segoe UI"
  106. BorderThickness="1"
  107. MouseEnter="writableComboBox_MouseEnter"
  108. MouseLeave="writableComboBox_MouseLeave"
  109. SelectedIndex="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:WritableComboBox}, Path=SelectedIndex}"
  110. SelectionChanged="writableComboBox_SelectionChanged"
  111. Visibility="Visible">
  112. <ComboBoxItem
  113. x:Name="AllPageItem"
  114. Tag="AllPage"
  115. Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:WritableComboBox}, Path=IsAllPageVisible}" />
  116. <ComboBoxItem x:Name="OddPageItem" Tag="OddPage" />
  117. <ComboBoxItem
  118. x:Name="EvenPageItem"
  119. IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:WritableComboBox}, Path=EvenPageIsEnabled}"
  120. Tag="EvenPage" />
  121. <ComboBoxItem x:Name="CustomPageItem" Tag="CustomPage" />
  122. </ComboBox>
  123. <Border
  124. Grid.Column="1"
  125. MinWidth="58"
  126. MinHeight="24"
  127. Panel.ZIndex="1"
  128. BorderBrush="{StaticResource color.field.border.focus}"
  129. BorderThickness="1"
  130. CornerRadius="0"
  131. Effect="{StaticResource shadow.blue-0-4}"
  132. Visibility="{Binding ElementName=writableTextBox, Path=IsFocused, Converter={StaticResource BoolToVisible}}" />
  133. <Border
  134. x:Name="ErrorBorder"
  135. Grid.Column="1"
  136. MinWidth="58"
  137. MinHeight="24"
  138. Panel.ZIndex="2"
  139. BorderBrush="{StaticResource color.field.border.error}"
  140. BorderThickness="1"
  141. CornerRadius="4"
  142. Effect="{StaticResource shadow.error.s}"
  143. Visibility="Collapsed" />
  144. <TextBox
  145. x:Name="writableTextBox"
  146. Grid.Column="0"
  147. MinHeight="{Binding ElementName=writableComboBox, Path=MinHeight}"
  148. Margin="2"
  149. HorizontalAlignment="Left"
  150. VerticalContentAlignment="Center"
  151. Panel.ZIndex="2"
  152. BorderBrush="{x:Null}"
  153. BorderThickness="0"
  154. GotFocus="writableTextBox_GotFocus"
  155. InputMethod.IsInputMethodEnabled="False"
  156. LostFocus="writableTextBox_LostFocus"
  157. PreviewKeyDown="writableTextBox_PreviewKeyDown"
  158. PreviewTextInput="writableTextBox_PreviewTextInput"
  159. Style="{StaticResource WarkTextBoxStyle}"
  160. Tag="例如1,3-5,10"
  161. Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:WritableComboBox}, Path=Text}"
  162. TextChanged="writableTextBox_TextChange"
  163. Visibility="Hidden"
  164. Cursor="IBeam">
  165. <!--<TextBox.CaretBrush>
  166. <SolidColorBrush Color="#FF7EB4EA" />
  167. </TextBox.CaretBrush>-->
  168. </TextBox>
  169. <local:PopTip
  170. x:Name="PopTipPageRange"
  171. Width="300"
  172. AllowsTransparency="True"
  173. Background="White"
  174. PlacementEx="BottomLeft"
  175. PlacementTarget="{Binding ElementName=writableTextBox}"
  176. StaysOpen="False">
  177. <Border>
  178. <TextBlock
  179. x:Name="TxtError"
  180. Margin="10"
  181. TextWrapping="WrapWithOverflow" />
  182. </Border>
  183. </local:PopTip>
  184. </Grid>
  185. </UserControl>