CardLoginWindow.xaml 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  1. <Window x:Class="TeamAAS_VP.Views.User.CardLoginWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6. xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
  7. xmlns:prism="http://prismlibrary.com/"
  8. xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
  9. xmlns:vm="clr-namespace:TeamAAS_VP.ViewModels.User"
  10. xmlns:local="clr-namespace:TeamAAS_VP"
  11. xmlns:converter="clr-namespace:TeamAAS_VP.ValueConverter"
  12. xmlns:lex="http://wpflocalizeextension.codeplex.com"
  13. lex:LocalizeDictionary.DesignCulture="zh-CN"
  14. lex:ResxLocalizationProvider.DefaultAssembly="TeamAAS-VP"
  15. lex:ResxLocalizationProvider.DefaultDictionary="Lang"
  16. mc:Ignorable="d"
  17. d:DataContext="{d:DesignInstance Type=vm:CardLoginWindowViewModel}"
  18. Background="Transparent"
  19. WindowState="Normal"
  20. WindowStyle="None"
  21. WindowStartupLocation="CenterScreen"
  22. AllowsTransparency="True"
  23. Width="563"
  24. Height="561"
  25. FontFamily="{DynamicResource DefaultFont}">
  26. <b:Interaction.Triggers>
  27. <b:EventTrigger EventName="Loaded">
  28. <b:InvokeCommandAction Command="{Binding LoadedCommand}" />
  29. </b:EventTrigger>
  30. <b:EventTrigger EventName="Closing">
  31. <b:CallMethodAction MethodName="Window_Closing"
  32. TargetObject="{Binding}" />
  33. </b:EventTrigger>
  34. </b:Interaction.Triggers>
  35. <Border Width="563"
  36. Height="561"
  37. CornerRadius="60"
  38. BorderBrush="Black"
  39. BorderThickness="1">
  40. <Border.Background>
  41. <LinearGradientBrush EndPoint="0.497,1.007"
  42. StartPoint="0.494,0.009">
  43. <GradientStop Color="#FF309EAF" />
  44. <GradientStop Color="White"
  45. Offset="1" />
  46. </LinearGradientBrush>
  47. </Border.Background>
  48. <Grid>
  49. <Button Content="X"
  50. FontSize="16"
  51. FontWeight="Bold"
  52. Width="32"
  53. Height="32"
  54. HorizontalAlignment="Right"
  55. VerticalAlignment="Top"
  56. Margin="0,20,18,0"
  57. Command="{Binding CloseCommand}"
  58. Background="Transparent"
  59. BorderBrush="Transparent"
  60. Foreground="Black" />
  61. <TextBlock Text="用户登录"
  62. HorizontalAlignment="Center"
  63. VerticalAlignment="Top"
  64. FontSize="32"
  65. Margin="0,58,0,0"
  66. FontWeight="Bold" />
  67. <materialDesign:Transitioner Margin="20,110,20,20"
  68. AutoApplyTransitionOrigins="True"
  69. d:SelectedIndex="0"
  70. SelectedIndex="{Binding PageIndex}">
  71. <materialDesign:TransitionerSlide OpeningEffect="{materialDesign:TransitionEffect FadeIn}">
  72. <Grid Background="Transparent">
  73. <Grid>
  74. <!-- 刷卡动画区域 -->
  75. <Border BorderThickness="1"
  76. BorderBrush="#bdc3c7"
  77. Background="#f8f9fa"
  78. CornerRadius="8"
  79. Margin="0,10"
  80. VerticalAlignment="Top"
  81. HorizontalAlignment="Center"
  82. Padding="30">
  83. <Canvas Width="300"
  84. Height="200">
  85. <!-- 刷卡器主体 -->
  86. <Rectangle Canvas.Left="50"
  87. Canvas.Top="70"
  88. Width="200"
  89. Height="60"
  90. Fill="#34495e"
  91. RadiusX="5"
  92. RadiusY="5">
  93. <Rectangle.Effect>
  94. <DropShadowEffect ShadowDepth="2"
  95. Direction="270"
  96. BlurRadius="5"
  97. Opacity="0.2" />
  98. </Rectangle.Effect>
  99. </Rectangle>
  100. <!-- 刷卡槽 -->
  101. <Rectangle Canvas.Left="60"
  102. Canvas.Top="75"
  103. Width="180"
  104. Height="10"
  105. Fill="#7f8c8d"
  106. RadiusX="2"
  107. RadiusY="2" />
  108. <!-- 动态卡片 -->
  109. <Border x:Name="AnimatedCard"
  110. Canvas.Left="50"
  111. Canvas.Top="10"
  112. Width="180"
  113. Height="100"
  114. Background="#3498db"
  115. CornerRadius="8"
  116. BorderThickness="1"
  117. BorderBrush="#2980b9">
  118. <Border.Effect>
  119. <DropShadowEffect ShadowDepth="3"
  120. Direction="270"
  121. BlurRadius="10"
  122. Opacity="0.3" />
  123. </Border.Effect>
  124. <!-- 卡片动画 -->
  125. <Border.Triggers>
  126. <EventTrigger RoutedEvent="Loaded">
  127. <BeginStoryboard>
  128. <Storyboard RepeatBehavior="Forever">
  129. <!-- 卡片下落动画 -->
  130. <DoubleAnimation Storyboard.TargetProperty="(Canvas.Top)"
  131. From="10"
  132. To="70"
  133. Duration="0:0:1"
  134. AutoReverse="True"
  135. BeginTime="0:0:0" />
  136. <!-- 卡片透明度变化 -->
  137. <DoubleAnimation Storyboard.TargetProperty="Opacity"
  138. From="1"
  139. To="0.7"
  140. Duration="0:0:0.5"
  141. AutoReverse="True"
  142. BeginTime="0:0:0.5" />
  143. </Storyboard>
  144. </BeginStoryboard>
  145. </EventTrigger>
  146. </Border.Triggers>
  147. <!-- 卡片内部设计 -->
  148. <Grid>
  149. <Grid.RowDefinitions>
  150. <RowDefinition Height="*" />
  151. <RowDefinition Height="Auto" />
  152. </Grid.RowDefinitions>
  153. <TextBlock Text="员工卡"
  154. Foreground="White"
  155. FontSize="14"
  156. FontWeight="Bold"
  157. HorizontalAlignment="Center"
  158. VerticalAlignment="Center" />
  159. <Rectangle Grid.Row="1"
  160. Height="20"
  161. Fill="#2980b9"
  162. RadiusX="0"
  163. RadiusY="0,0,8,8" />
  164. <TextBlock Grid.Row="1"
  165. Text="●●●● 1234"
  166. Foreground="White"
  167. FontSize="10"
  168. HorizontalAlignment="Center"
  169. VerticalAlignment="Center" />
  170. </Grid>
  171. </Border>
  172. <!-- 扫描光线效果 -->
  173. <Rectangle x:Name="ScanBeam"
  174. Canvas.Left="60"
  175. Canvas.Top="75"
  176. Width="180"
  177. Height="2"
  178. Fill="#2ecc71"
  179. Opacity="0">
  180. <Rectangle.Effect>
  181. <BlurEffect Radius="3" />
  182. </Rectangle.Effect>
  183. <Rectangle.Triggers>
  184. <EventTrigger RoutedEvent="Loaded">
  185. <BeginStoryboard>
  186. <Storyboard RepeatBehavior="Forever">
  187. <!-- 扫描光束移动动画 -->
  188. <DoubleAnimation Storyboard.TargetProperty="(Canvas.Top)"
  189. From="75"
  190. To="125"
  191. Duration="0:0:0.8"
  192. BeginTime="0:0:0.5" />
  193. <!-- 扫描光束透明度动画 -->
  194. <DoubleAnimation Storyboard.TargetProperty="Opacity"
  195. From="0"
  196. To="1"
  197. Duration="0:0:0.2"
  198. AutoReverse="True"
  199. BeginTime="0:0:0.5" />
  200. </Storyboard>
  201. </BeginStoryboard>
  202. </EventTrigger>
  203. </Rectangle.Triggers>
  204. </Rectangle>
  205. <!-- 状态指示灯 -->
  206. <Ellipse Canvas.Left="20"
  207. Canvas.Top="80"
  208. Width="12"
  209. Height="12"
  210. Fill="#e74c3c">
  211. <Ellipse.Triggers>
  212. <EventTrigger RoutedEvent="Loaded">
  213. <BeginStoryboard>
  214. <Storyboard RepeatBehavior="Forever">
  215. <!-- 指示灯颜色变化动画 -->
  216. <ColorAnimation Storyboard.TargetProperty="(Ellipse.Fill).(SolidColorBrush.Color)"
  217. From="#e74c3c"
  218. To="#2ecc71"
  219. Duration="0:0:1"
  220. AutoReverse="True"
  221. BeginTime="0:0:0.5" />
  222. </Storyboard>
  223. </BeginStoryboard>
  224. </EventTrigger>
  225. </Ellipse.Triggers>
  226. </Ellipse>
  227. </Canvas>
  228. </Border>
  229. <!-- 提示文字 -->
  230. <TextBlock Text="请刷卡..."
  231. HorizontalAlignment="Center"
  232. VerticalAlignment="Bottom"
  233. Margin="0,120"
  234. FontSize="16"
  235. Foreground="#2c3e50"
  236. FontWeight="SemiBold" />
  237. </Grid>
  238. <Button Height="50"
  239. Width="50"
  240. materialDesign:ButtonAssist.CornerRadius="5"
  241. HorizontalAlignment="Center"
  242. VerticalAlignment="Bottom"
  243. Margin="0,0,0,44"
  244. ToolTip="账户登录"
  245. Command="{Binding TransitionerCommand}"
  246. CommandParameter="1"
  247. Padding="0"
  248. IsEnabled="{Binding IsLogining,Converter={StaticResource InvertBooleanConverter}}">
  249. <Button.Content>
  250. <materialDesign:PackIcon Kind="User"
  251. Height="32"
  252. Width="32" />
  253. </Button.Content>
  254. </Button>
  255. </Grid>
  256. </materialDesign:TransitionerSlide>
  257. <Grid HorizontalAlignment="Center"
  258. Margin="0,50">
  259. <Grid.RowDefinitions>
  260. <RowDefinition Height="Auto" />
  261. <RowDefinition Height="Auto" />
  262. <RowDefinition Height="Auto" />
  263. <RowDefinition Height="Auto" />
  264. </Grid.RowDefinitions>
  265. <Grid.ColumnDefinitions>
  266. <ColumnDefinition Width="Auto" />
  267. <ColumnDefinition Width="Auto" />
  268. </Grid.ColumnDefinitions>
  269. <TextBlock Grid.Row="0"
  270. Grid.Column="0"
  271. HorizontalAlignment="Left"
  272. VerticalAlignment="Center"
  273. Margin="20"
  274. FontSize="18"
  275. FontWeight="Bold"
  276. Text="用户名:" />
  277. <TextBox Grid.Row="0"
  278. Grid.Column="1"
  279. HorizontalAlignment="Left"
  280. VerticalAlignment="Center"
  281. Margin="20"
  282. Width="200"
  283. BorderThickness="1,1,1,1"
  284. FontSize="16"
  285. TextAlignment="Center"
  286. Text="{Binding Name}" />
  287. <TextBlock Grid.Row="1"
  288. Grid.Column="0"
  289. HorizontalAlignment="Left"
  290. VerticalAlignment="Center"
  291. Margin="20"
  292. FontSize="18"
  293. FontWeight="Bold"
  294. Text="密码:" />
  295. <PasswordBox Grid.Row="1"
  296. Grid.Column="1"
  297. HorizontalAlignment="Left"
  298. VerticalAlignment="Center"
  299. Margin="20"
  300. Width="200"
  301. HorizontalContentAlignment="Center"
  302. VerticalContentAlignment="Center"
  303. BorderThickness="1,1,1,1"
  304. PasswordChar="*"
  305. FontSize="16"
  306. Padding="0,4,0,4"
  307. materialDesign:HintAssist.HelperText="请输入用户登录密码"
  308. materialDesign:TextFieldAssist.HasClearButton="True"
  309. materialDesign:PasswordBoxAssist.Password="{Binding Path=Password, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True}" />
  310. <Button Grid.Row="2"
  311. Grid.Column="0"
  312. Grid.ColumnSpan="2"
  313. HorizontalAlignment="Center"
  314. VerticalAlignment="Center"
  315. Content="{lex:Loc 登录}"
  316. Height="30"
  317. Margin="0,50"
  318. MinWidth="200"
  319. BorderThickness="0"
  320. materialDesign:ButtonAssist.CornerRadius="5"
  321. Command="{Binding LoginCommand}">
  322. <Button.Background>
  323. <LinearGradientBrush EndPoint="0.5,1"
  324. StartPoint="0.5,0">
  325. <GradientStop Color="#FF73B3BD"
  326. Offset="0" />
  327. <GradientStop Color="#FF309EAF"
  328. Offset="1" />
  329. </LinearGradientBrush>
  330. </Button.Background>
  331. </Button>
  332. <Button Grid.Row="3"
  333. Grid.Column="0"
  334. Grid.ColumnSpan="2"
  335. Height="50"
  336. Width="50"
  337. materialDesign:ButtonAssist.CornerRadius="5"
  338. HorizontalAlignment="Center"
  339. VerticalAlignment="Center"
  340. ToolTip="刷卡登录"
  341. Padding="0"
  342. Command="{Binding TransitionerCommand}"
  343. CommandParameter="0"
  344. Visibility="{Binding CardBtnVisibility}"
  345. IsEnabled="{Binding IsLogining,Converter={StaticResource InvertBooleanConverter}}">
  346. <Button.Content>
  347. <materialDesign:PackIcon Kind="CreditCardScanOutline" />
  348. </Button.Content>
  349. </Button>
  350. </Grid>
  351. </materialDesign:Transitioner>
  352. </Grid>
  353. </Border>
  354. </Window>