CardLoginWindow.xaml 21 KB

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