TitleTextBoxStyle.xaml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. xmlns:MyControls="clr-namespace:CustomUI">
  4. <ResourceDictionary.MergedDictionaries>
  5. <ResourceDictionary Source="pack://application:,,,/WPF.UI;component/Resources/AutoDisappearScrollViewerStyle.xaml"/>
  6. <ResourceDictionary Source="/WPF.UI;component/Resources/PathGeometry.xaml" />
  7. </ResourceDictionary.MergedDictionaries>
  8. <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
  9. <SolidColorBrush x:Key="TextBox.Static.Border" Color="#DEDEDE" />
  10. <SolidColorBrush x:Key="TextBox.MouseOver.Border" Color="#BEBEBE" />
  11. <SolidColorBrush x:Key="TextBox.Focus.Border" Color="#5DA9E9" />
  12. <ControlTemplate x:Key="TitleIsLeft" TargetType="{x:Type MyControls:TitleTextBox}">
  13. <Border x:Name="border"
  14. Background="{TemplateBinding Background}"
  15. BorderBrush="{TemplateBinding BorderBrush}"
  16. BorderThickness="{TemplateBinding BorderThickness}"
  17. SnapsToDevicePixels="True" UseLayoutRounding="True">
  18. <Grid>
  19. <Grid.ColumnDefinitions>
  20. <ColumnDefinition Width="auto" />
  21. <ColumnDefinition Width="*" />
  22. <ColumnDefinition Width="auto" />
  23. </Grid.ColumnDefinitions>
  24. <TextBlock x:Name="PART_Title" Margin="5,0,0,0"
  25. VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
  26. FontFamily="{TemplateBinding FontFamily}"
  27. FontSize="{TemplateBinding FontSize}"
  28. Foreground="#9A9A9A"
  29. Text="{TemplateBinding Title}"
  30. Visibility="{Binding IsShowTitle, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BooleanToVisibilityConverter}}"/>
  31. <ScrollViewer x:Name="PART_ContentHost" Grid.Column="1"
  32. Margin="{TemplateBinding Padding}"
  33. Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" />
  34. <Border Grid.Column="2" Visibility="{Binding CanClearText, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BooleanToVisibilityConverter}}">
  35. <Path x:Name="PART_ClearText" Grid.Column="2" Width="13" Margin="0,0,4,0"
  36. Data="{StaticResource Icon_Delete}"
  37. Fill="#DEDEDE" Stretch="Uniform">
  38. <Path.Style>
  39. <Style TargetType="{x:Type Path}">
  40. <Style.Triggers>
  41. <MultiDataTrigger>
  42. <MultiDataTrigger.Conditions>
  43. <Condition Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MyControls:TitleTextBox}}}" Value="True" />
  44. <Condition Binding="{Binding Text.IsEmpty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MyControls:TitleTextBox}}}" Value="True" />
  45. </MultiDataTrigger.Conditions>
  46. <Setter Property="Visibility" Value="Collapsed" />
  47. </MultiDataTrigger>
  48. <MultiDataTrigger>
  49. <MultiDataTrigger.Conditions>
  50. <Condition Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MyControls:TitleTextBox}}}" Value="True" />
  51. <Condition Binding="{Binding Text.IsEmpty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MyControls:TitleTextBox}}}" Value="False" />
  52. </MultiDataTrigger.Conditions>
  53. <Setter Property="Visibility" Value="Visible" />
  54. </MultiDataTrigger>
  55. <MultiDataTrigger>
  56. <MultiDataTrigger.Conditions>
  57. <Condition Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MyControls:TitleTextBox}}}" Value="False" />
  58. <Condition Binding="{Binding Text.IsEmpty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MyControls:TitleTextBox}}}" Value="True" />
  59. </MultiDataTrigger.Conditions>
  60. <Setter Property="Visibility" Value="Collapsed" />
  61. </MultiDataTrigger>
  62. <MultiDataTrigger>
  63. <MultiDataTrigger.Conditions>
  64. <Condition Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MyControls:TitleTextBox}}}" Value="False" />
  65. <Condition Binding="{Binding Text.IsEmpty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MyControls:TitleTextBox}}}" Value="False" />
  66. </MultiDataTrigger.Conditions>
  67. <Setter Property="Visibility" Value="Collapsed" />
  68. </MultiDataTrigger>
  69. <MultiDataTrigger>
  70. <MultiDataTrigger.Conditions>
  71. <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MyControls:TitleTextBox}}}" Value="True" />
  72. <Condition Binding="{Binding Text.IsEmpty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MyControls:TitleTextBox}}}" Value="True" />
  73. </MultiDataTrigger.Conditions>
  74. <Setter Property="Visibility" Value="Collapsed" />
  75. </MultiDataTrigger>
  76. <MultiDataTrigger>
  77. <MultiDataTrigger.Conditions>
  78. <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MyControls:TitleTextBox}}}" Value="True" />
  79. <Condition Binding="{Binding Text.IsEmpty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MyControls:TitleTextBox}}}" Value="False" />
  80. </MultiDataTrigger.Conditions>
  81. <Setter Property="Visibility" Value="Visible" />
  82. </MultiDataTrigger>
  83. </Style.Triggers>
  84. </Style>
  85. </Path.Style>
  86. </Path>
  87. </Border>
  88. </Grid>
  89. </Border>
  90. <ControlTemplate.Triggers>
  91. <Trigger Property="IsEnabled" Value="false">
  92. <Setter TargetName="border" Property="BorderThickness" Value="0" />
  93. </Trigger>
  94. <Trigger Property="IsReadOnly" Value="True">
  95. <Setter TargetName="border" Property="BorderThickness" Value="0" />
  96. </Trigger>
  97. <Trigger Property="IsMouseOver" Value="true">
  98. <Setter TargetName="border" Property="BorderBrush" Value="{StaticResource TextBox.MouseOver.Border}" />
  99. </Trigger>
  100. <Trigger Property="IsKeyboardFocused" Value="true">
  101. <Setter TargetName="border" Property="BorderBrush" Value="{StaticResource TextBox.Focus.Border}" />
  102. </Trigger>
  103. </ControlTemplate.Triggers>
  104. </ControlTemplate>
  105. <ControlTemplate x:Key="TitleIsTop" TargetType="{x:Type MyControls:TitleTextBox}">
  106. <Border x:Name="border"
  107. Background="{TemplateBinding Background}"
  108. BorderBrush="{TemplateBinding BorderBrush}"
  109. BorderThickness="{TemplateBinding BorderThickness}"
  110. SnapsToDevicePixels="True" UseLayoutRounding="True">
  111. <Grid>
  112. <Grid.RowDefinitions>
  113. <RowDefinition Height="auto" />
  114. <RowDefinition Height="*" />
  115. </Grid.RowDefinitions>
  116. <TextBlock Margin="5,3,0,0"
  117. VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
  118. FontFamily="{TemplateBinding FontFamily}"
  119. FontSize="{TemplateBinding FontSize}"
  120. Foreground="#9A9A9A"
  121. Text="{TemplateBinding Title}"
  122. Visibility="{Binding IsShowTitle, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BooleanToVisibilityConverter}}"/>
  123. <ScrollViewer x:Name="PART_ContentHost" Grid.Row="1"
  124. Margin="{TemplateBinding Padding}"
  125. Focusable="false" HorizontalScrollBarVisibility="Hidden"
  126. VerticalScrollBarVisibility="{TemplateBinding VerticalScrollBarVisibility}"
  127. VerticalAlignment="Stretch"
  128. Style="{StaticResource AutoDisappearScrollViewerStyle}"/>
  129. </Grid>
  130. </Border>
  131. <ControlTemplate.Triggers>
  132. <Trigger Property="IsEnabled" Value="false">
  133. <Setter TargetName="border" Property="BorderThickness" Value="0" />
  134. </Trigger>
  135. <Trigger Property="IsReadOnly" Value="True">
  136. <Setter TargetName="border" Property="BorderThickness" Value="0" />
  137. </Trigger>
  138. <Trigger Property="IsMouseOver" Value="true">
  139. <Setter TargetName="border" Property="BorderBrush" Value="{StaticResource TextBox.MouseOver.Border}" />
  140. </Trigger>
  141. <Trigger Property="IsKeyboardFocused" Value="true">
  142. <Setter TargetName="border" Property="BorderBrush" Value="{StaticResource TextBox.Focus.Border}" />
  143. </Trigger>
  144. </ControlTemplate.Triggers>
  145. </ControlTemplate>
  146. <Style TargetType="{x:Type MyControls:TitleTextBox}">
  147. <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" />
  148. <Setter Property="BorderBrush" Value="{StaticResource TextBox.Static.Border}" />
  149. <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
  150. <Setter Property="BorderThickness" Value="1" />
  151. <Setter Property="KeyboardNavigation.TabNavigation" Value="None" />
  152. <Setter Property="HorizontalContentAlignment" Value="Left" />
  153. <Setter Property="VerticalContentAlignment" Value="Center" />
  154. <Setter Property="FocusVisualStyle" Value="{x:Null}" />
  155. <Setter Property="AllowDrop" Value="true" />
  156. <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst" />
  157. <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
  158. <Setter Property="Padding" Value="2,0,2,0" />
  159. <Setter Property="Title" Value="标题:" />
  160. <Setter Property="Template" Value="{StaticResource TitleIsLeft}" />
  161. <Style.Triggers>
  162. <Trigger Property="TitleOrientation" Value="Vertical">
  163. <Setter Property="Template" Value="{StaticResource TitleIsTop}" />
  164. <Setter Property="AcceptsReturn" Value="True" />
  165. <Setter Property="TextWrapping" Value="Wrap" />
  166. <Setter Property="Padding" Value="2,2,0,2" />
  167. <Setter Property="VerticalScrollBarVisibility" Value="Auto" />
  168. </Trigger>
  169. </Style.Triggers>
  170. </Style>
  171. </ResourceDictionary>