ZPasswordBox.xaml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. xmlns:ZUI="clr-namespace:CustomUI">
  4. <PathGeometry x:Key="Icon_Password" Figures="M12,17A2,2,0,0,0,14,15C14,13.89,13.1,13,12,13A2,2,0,0,0,10,15A2,2,0,0,0,12,17 M18,8A2,2,0,0,1,20,10L20,20A2,2,0,0,1,18,22L6,22A2,2,0,0,1,4,20L4,10C4,8.89,4.9,8,6,8L7,8 7,6A5,5,0,0,1,12,1A5,5,0,0,1,17,6L17,8 18,8 M12,3A3,3,0,0,0,9,6L9,8 15,8 15,6A3,3,0,0,0,12,3z" />
  5. <PathGeometry x:Key="Icon_SeePassword" Figures="M12,9A3,3,0,0,0,9,12A3,3,0,0,0,12,15A3,3,0,0,0,15,12A3,3,0,0,0,12,9 M12,17A5,5,0,0,1,7,12A5,5,0,0,1,12,7A5,5,0,0,1,17,12A5,5,0,0,1,12,17 M12,4.5C7,4.5 2.73,7.61 1,12 2.73,16.39 7,19.5 12,19.5 17,19.5 21.27,16.39 23,12 21.27,7.61 17,4.5 12,4.5z" />
  6. <PathGeometry x:Key="Icon_NotSeePassword" Figures="M941.677 391.71c9.338-14.006 6.225-32.681-6.225-43.575-14.006-10.894-32.681-7.781-43.575 6.225-1.557 1.556-174.3 205.426-379.728 205.426-199.2 0-379.727-205.426-381.283-206.982-10.895-12.45-31.125-14.006-43.576-3.113-12.45 10.894-14.006 31.125-3.113 43.576 3.113 4.668 40.463 46.687 99.6 93.375l-79.37 82.482c-12.45 12.45-10.893 32.681 1.557 43.575 3.113 6.225 10.894 9.338 18.676 9.338 7.78 0 15.562-3.113 21.787-9.338l85.594-88.706c40.463 28.013 88.707 54.47 141.62 73.144l-32.682 110.495c-4.668 17.118 4.67 34.237 21.788 38.906h9.337c14.006 0 26.457-9.338 29.569-23.344l32.681-110.495c24.9 4.669 51.357 7.782 77.813 7.782s52.913-3.113 77.814-7.782l32.68 108.939c3.114 14.006 17.12 23.343 29.57 23.343 3.113 0 6.225 0 7.782-1.556 17.118-4.67 26.456-21.787 21.788-38.906L649.099 595.58c52.914-18.676 101.157-45.132 141.62-73.144l84.038 87.15c6.225 6.225 14.006 9.338 21.787 9.338 7.781 0 15.563-3.113 21.787-9.337 12.45-12.451 12.45-31.125 1.557-43.576l-79.37-82.481c63.808-46.689 101.16-91.82 101.16-91.82z" />
  7. <Style x:Key="SeePassowrdButtonStyle" TargetType="ToggleButton">
  8. <Setter Property="Background" Value="Gray" />
  9. <Setter Property="Template">
  10. <Setter.Value>
  11. <ControlTemplate TargetType="ToggleButton">
  12. <Border Background="Transparent" Padding="{TemplateBinding Padding}">
  13. <Path x:Name="path" Width="{TemplateBinding FontSize}"
  14. Data="{StaticResource Icon_NotSeePassword}"
  15. Fill="{TemplateBinding Background}" Stretch="Uniform" />
  16. </Border>
  17. <ControlTemplate.Triggers>
  18. <Trigger Property="IsChecked" Value="True">
  19. <Setter TargetName="path" Property="Data" Value="{StaticResource Icon_SeePassword}" />
  20. </Trigger>
  21. </ControlTemplate.Triggers>
  22. </ControlTemplate>
  23. </Setter.Value>
  24. </Setter>
  25. </Style>
  26. <Style TargetType="{x:Type ZUI:ZPasswordBox}">
  27. <Setter Property="Background" Value="White" />
  28. <Setter Property="BorderBrush" Value="#CCCEDB" />
  29. <Setter Property="CornerRadius" Value="3" />
  30. <Setter Property="BorderThickness" Value="1" />
  31. <Setter Property="Foreground" Value="Black" />
  32. <Setter Property="Padding" Value="3,0" />
  33. <Setter Property="IconBackground" Value="Transparent" />
  34. <Setter Property="IconForeground" Value="Black" />
  35. <Setter Property="IconWidth" Value="10" />
  36. <Setter Property="IconPadding" Value="7,0" />
  37. <Setter Property="IconBorderThickness" Value="0,0,1,0" />
  38. <Setter Property="IconPathData" Value="{StaticResource Icon_Password}" />
  39. <Setter Property="HorizontalContentAlignment" Value="Left" />
  40. <Setter Property="VerticalContentAlignment" Value="Center" />
  41. <Setter Property="SnapsToDevicePixels" Value="True" />
  42. <Setter Property="UseLayoutRounding" Value="False" />
  43. <Setter Property="FocusVisualStyle" Value="{x:Null}" />
  44. <Setter Property="Template">
  45. <Setter.Value>
  46. <ControlTemplate TargetType="{x:Type ZUI:ZPasswordBox}">
  47. <Border x:Name="Root" Background="{TemplateBinding Background}"
  48. BorderBrush="{TemplateBinding BorderBrush}"
  49. BorderThickness="{TemplateBinding BorderThickness}"
  50. CornerRadius="{TemplateBinding CornerRadius}"
  51. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
  52. UseLayoutRounding="{TemplateBinding UseLayoutRounding}">
  53. <Grid>
  54. <Grid.ColumnDefinitions>
  55. <ColumnDefinition Width="auto" />
  56. <ColumnDefinition Width="*" />
  57. <ColumnDefinition Width="auto" />
  58. </Grid.ColumnDefinitions>
  59. <Border x:Name="icon" Background="{TemplateBinding IconBackground}"
  60. BorderBrush="{TemplateBinding BorderBrush}"
  61. BorderThickness="{TemplateBinding IconBorderThickness}"
  62. Padding="{TemplateBinding IconPadding}"
  63. CornerRadius="{TemplateBinding IconCornerRadius}"
  64. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
  65. UseLayoutRounding="{TemplateBinding UseLayoutRounding}">
  66. <Path Width="{TemplateBinding IconWidth}"
  67. Data="{TemplateBinding IconPathData}"
  68. Fill="{TemplateBinding IconForeground}" Stretch="Uniform" />
  69. </Border>
  70. <TextBlock Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
  71. FontSize="{TemplateBinding FontSize}" Opacity="0.4"
  72. Text="{TemplateBinding Watermark}" Margin="{TemplateBinding Padding}">
  73. <TextBlock.Style>
  74. <Style TargetType="{x:Type TextBlock}">
  75. <Style.Triggers>
  76. <MultiDataTrigger>
  77. <MultiDataTrigger.Conditions>
  78. <Condition Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ZUI:ZPasswordBox}}}" Value="True" />
  79. <Condition Binding="{Binding Text.IsEmpty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ZUI:ZPasswordBox}}}" Value="True" />
  80. </MultiDataTrigger.Conditions>
  81. <Setter Property="Visibility" Value="Collapsed" />
  82. </MultiDataTrigger>
  83. <MultiDataTrigger>
  84. <MultiDataTrigger.Conditions>
  85. <Condition Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ZUI:ZPasswordBox}}}" Value="True" />
  86. <Condition Binding="{Binding Text.IsEmpty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ZUI:ZPasswordBox}}}" Value="False" />
  87. </MultiDataTrigger.Conditions>
  88. <Setter Property="Visibility" Value="Collapsed" />
  89. </MultiDataTrigger>
  90. <MultiDataTrigger>
  91. <MultiDataTrigger.Conditions>
  92. <Condition Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ZUI:ZPasswordBox}}}" Value="False" />
  93. <Condition Binding="{Binding Text.IsEmpty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ZUI:ZPasswordBox}}}" Value="False" />
  94. </MultiDataTrigger.Conditions>
  95. <Setter Property="Visibility" Value="Collapsed" />
  96. </MultiDataTrigger>
  97. </Style.Triggers>
  98. </Style>
  99. </TextBlock.Style>
  100. </TextBlock>
  101. <ScrollViewer x:Name="PART_ContentHost" Grid.Column="1" Focusable="False"
  102. HorizontalScrollBarVisibility="Hidden"
  103. VerticalScrollBarVisibility="Hidden" />
  104. <ToggleButton x:Name="PART_SeePassword" Grid.Column="2" Padding="5,0"
  105. Style="{StaticResource SeePassowrdButtonStyle}"
  106. FontSize="14" Visibility="Collapsed"/>
  107. </Grid>
  108. </Border>
  109. <ControlTemplate.Triggers>
  110. <Trigger Property="IsMouseOver" Value="True">
  111. <Setter TargetName="Root" Property="BorderBrush" Value="#5CADFF" />
  112. </Trigger>
  113. <Trigger Property="IsShowIcon" Value="False">
  114. <Setter TargetName="icon" Property="Visibility" Value="Collapsed" />
  115. </Trigger>
  116. <MultiTrigger>
  117. <MultiTrigger.Conditions>
  118. <Condition Property="IsKeyboardFocused" Value="True" />
  119. <Condition Property="IsMouseOver" Value="False" />
  120. </MultiTrigger.Conditions>
  121. <Setter TargetName="Root" Property="BorderBrush" Value="#5CADFF" />
  122. </MultiTrigger>
  123. </ControlTemplate.Triggers>
  124. </ControlTemplate>
  125. </Setter.Value>
  126. </Setter>
  127. </Style>
  128. </ResourceDictionary>