MainWindow.xaml 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <pu:WindowX x:Class="SWRIS.MainWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:cvt="clr-namespace:SWRIS.Converters"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  7. xmlns:local="clr-namespace:SWRIS"
  8. WindowStyle="None"
  9. FontFamily="{StaticResource PuHuiTiRegular}"
  10. ResizeMode="CanMinimize"
  11. Title="{Binding AppName}"
  12. Foreground="#FFFFFF"
  13. xmlns:pu="clr-namespace:Panuon.WPF.UI;assembly=Panuon.WPF.UI"
  14. xmlns:vm="clr-namespace:SWRIS.Models.ViewModel"
  15. xmlns:extension="clr-namespace:SWRIS.Extensions"
  16. xmlns:ctr="clr-namespace:SWRIS.Controls"
  17. d:DataContext="{d:DesignInstance Type=vm:MainViewModel}"
  18. MaskBrush="#66000000"
  19. mc:Ignorable="d"
  20. Closing="Window_Closing"
  21. Background="#141332"
  22. WindowState="Maximized"
  23. Left="0" Top="0"
  24. Loaded="WindowX_Loaded"
  25. pu:WindowXCaption.Height="0">
  26. <Window.Resources>
  27. <cvt:MenuNameToPositionConverter x:Key="MenuNameToPositionConverter"/>
  28. <cvt:MenuNameToColorConverter x:Key="MenuNameToColorConverter"/>
  29. <cvt:StringEmptyToVisibilityConverter x:Key="StringEmptyToVisibilityConverter"/>
  30. <cvt:TrolleysToVisibilityConverter x:Key="TrolleysToVisibilityConverter"/>
  31. </Window.Resources>
  32. <!-- 外层 Grid 占满整个窗口 -->
  33. <Grid>
  34. <!-- 关键:使用 ViewBox 包裹内容,设定基准分辨率为 1920x1080 -->
  35. <!-- Stretch="Uniform" 保证等比例缩放,不会变形 -->
  36. <Viewbox Stretch="Uniform">
  37. <Grid x:Name="RootGrid" Width="1920" Height="1080">
  38. <Grid.RowDefinitions>
  39. <!-- 这里的行高保持你原来的设计值 -->
  40. <RowDefinition Height="90"/>
  41. <RowDefinition Height="*"/>
  42. <RowDefinition Height="35"/>
  43. </Grid.RowDefinitions>
  44. <!-- 顶部菜单区域 -->
  45. <StackPanel Orientation="Horizontal" Grid.Row="0"
  46. Grid.ColumnSpan="2"
  47. pu:WindowX.IsDragMoveArea="True"
  48. MouseDown="StackPanel_MouseDown">
  49. <StackPanel.Background>
  50. <ImageBrush ImageSource="/Resources/menu_bg.png"/>
  51. </StackPanel.Background>
  52. <Grid>
  53. <Grid.ColumnDefinitions>
  54. <!-- 这里的列宽保持原设计值,ViewBox会自动缩放 -->
  55. <ColumnDefinition Width="700"/>
  56. <ColumnDefinition Width="430"/>
  57. <ColumnDefinition Width="340"/>
  58. <ColumnDefinition Width="*"/>
  59. </Grid.ColumnDefinitions>
  60. <!-- Logo 区域 -->
  61. <StackPanel Orientation="Horizontal" Grid.Column="0">
  62. <Image Source="/Resources/logo.png" Margin="56,19,19,20"/>
  63. <TextBlock Text="{Binding AppName}"
  64. VerticalAlignment="Center"
  65. FontSize="40"
  66. FontWeight="Bold"
  67. FontFamily="{StaticResource PuHuiTiRegular}"/>
  68. </StackPanel>
  69. <!-- 动态菜单区域 (包含下划线动画) -->
  70. <Canvas Grid.Column="1">
  71. <!-- 下划线图片 -->
  72. <Image x:Name="popupImage"
  73. Source="/Resources/menu_dec.png"
  74. Width="300"
  75. Canvas.Left="{Binding CurrentPage,Mode=TwoWay,Converter={StaticResource MenuNameToPositionConverter}}"/>
  76. <!-- 菜单文字 -->
  77. <StackPanel Orientation="Horizontal">
  78. <TextBlock Text="主页" Tag="Home" FontWeight="Bold" FontFamily="{StaticResource PuHuiTiRegular}" FontSize="30" Padding="30,0"
  79. Margin="90,25,20,25" Cursor="Hand"
  80. Foreground="{Binding CurrentPage,Converter={StaticResource MenuNameToColorConverter},ConverterParameter=Home}"
  81. MouseDown="Menu_MouseDown"/>
  82. <TextBlock Text="记录" Tag="Record" FontWeight="Bold" FontFamily="{StaticResource PuHuiTiRegular}" FontSize="30" Padding="30,0"
  83. Margin="20,25,90,25" Cursor="Hand"
  84. Foreground="{Binding CurrentPage,Converter={StaticResource MenuNameToColorConverter},ConverterParameter=Record}"
  85. MouseDown="Menu_MouseDown"/>
  86. </StackPanel>
  87. </Canvas>
  88. <!-- 实例切换区域 -->
  89. <ItemsControl Grid.Column="2" ItemsSource="{Binding SwitchInstances}">
  90. <ItemsControl.ItemsPanel>
  91. <ItemsPanelTemplate>
  92. <StackPanel Margin="0,-20,0,0" Orientation="Horizontal" HorizontalAlignment="Left"/>
  93. </ItemsPanelTemplate>
  94. </ItemsControl.ItemsPanel>
  95. <ItemsControl.ItemTemplate>
  96. <DataTemplate>
  97. <Border Background="#3650BE" Width="105" Height="75" Tag="{Binding ProgressName}"
  98. CornerRadius="0,0,15,15" Margin="10,0"
  99. MouseLeftButtonDown="SwitchToInstance_MouseDown" Cursor="Hand">
  100. <StackPanel Orientation="Vertical" VerticalAlignment="Center">
  101. <Image Source="{Binding ImageSource}" Width="34" Margin="3"/>
  102. <TextBlock Text="{Binding InstanceName}" FontSize="18" FontWeight="Bold"
  103. HorizontalAlignment="Center" Foreground="#AEBAE8"/>
  104. </StackPanel>
  105. </Border>
  106. </DataTemplate>
  107. </ItemsControl.ItemTemplate>
  108. </ItemsControl>
  109. <!-- 右侧工具栏 -->
  110. <StackPanel Orientation="Horizontal" Grid.Column="3" HorizontalAlignment="Right" Margin="0,0,0,0">
  111. <StackPanel Orientation="Vertical" Margin="50,0,0,0" VerticalAlignment="Center">
  112. <TextBlock Text="{Binding SystemTime.Date,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
  113. FontSize="20" FontWeight="Bold" LineHeight="18" LineStackingStrategy="BlockLineHeight"/>
  114. <TextBlock Text="{Binding SystemTime.Time,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
  115. FontSize="34" FontWeight="Bold" FontFamily="{StaticResource PuHuiTiRegular}"
  116. LineHeight="38" LineStackingStrategy="BlockLineHeight"/>
  117. </StackPanel>
  118. <Image Source="/Resources/setting.png" MouseDown="Setting_MouseDown" Margin="35,0,0,0" Width="64" Cursor="Hand"/>
  119. <Image Source="/Resources/minimize.png" MouseDown="Minimize_MouseDown" Width="42" Margin="25,0,0,0" Cursor="Hand"/>
  120. <Image Source="/Resources/closed.png" MouseDown="Close_MouseDown" Width="42" Margin="25,0,0,0" Cursor="Hand"/>
  121. </StackPanel>
  122. </Grid>
  123. </StackPanel>
  124. <!-- 中间内容区域 -->
  125. <Frame x:Name="Main_Frame" Grid.Row="1" NavigationUIVisibility="Hidden" />
  126. <!-- 底部状态栏 -->
  127. <DockPanel Grid.Row="3" Margin="20 0" Grid.ColumnSpan="2">
  128. <StackPanel Orientation="Horizontal" Margin="5,5"
  129. Visibility="{Binding DebugMessage.Message,Converter={StaticResource StringEmptyToVisibilityConverter}}">
  130. <TextBlock Text="&#xE9ce;" FontSize="17" FontFamily="{StaticResource PanuonIconFont}" VerticalAlignment="Center" Foreground="#7F74FF"/>
  131. <TextBlock Text="{Binding DebugMessage.DateTime,StringFormat=HH:mm:ss}" FontSize="16" Margin="5,0"
  132. VerticalAlignment="Center"
  133. Foreground="#7F74FF"/>
  134. <TextBlock Text="{Binding DebugMessage.Message}" FontSize="16" Margin="5,0"
  135. VerticalAlignment="Center"
  136. Foreground="#7F74FF"/>
  137. </StackPanel>
  138. <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
  139. <TextBlock FontSize="18" Text="版本 " Foreground="#5B7098"/>
  140. <TextBlock FontSize="18" Text="{Binding Version}" Margin="0,0,30,0" Foreground="#5B7098"/>
  141. <TextBlock FontSize="18" Text="©" Foreground="#5B7098"/>
  142. <TextBlock Text="{Binding Copyright}" FontSize="18" Foreground="#5B7098"/>
  143. </StackPanel>
  144. </DockPanel>
  145. </Grid>
  146. </Viewbox>
  147. </Grid>
  148. </pu:WindowX>