MainWindow.axaml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. <suki:SukiWindow
  2. x:Class="ShakerApp.Views.MainWindow"
  3. xmlns="https://github.com/avaloniaui"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:local="using:ShakerApp"
  7. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  8. xmlns:model="using:ShakerApp.Models"
  9. xmlns:model1="using:Shaker.Models"
  10. xmlns:suki="https://github.com/kikipoulet/SukiUI"
  11. xmlns:views="clr-namespace:ShakerApp.Views"
  12. xmlns:vm="using:ShakerApp.ViewModels"
  13. Title="{Binding Title}"
  14. d:DesignHeight="450"
  15. d:DesignWidth="800"
  16. x:DataType="vm:MainViewModel"
  17. ClosingBehavior="OwnerAndChildWindows"
  18. DataContext="{Binding Source={x:Static vm:MainViewModel.Default}}"
  19. ExtendClientAreaChromeHints="NoChrome"
  20. ExtendClientAreaTitleBarHeightHint="0"
  21. ExtendClientAreaToDecorationsHint="True"
  22. FontStyle="Normal"
  23. FontWeight="Medium"
  24. Foreground="{Binding TitleColor}"
  25. IsMenuVisible="True"
  26. mc:Ignorable="d">
  27. <suki:SukiWindow.MenuItems>
  28. <MenuItem Header="{DynamicResource MenuFile}">
  29. <MenuItem
  30. Command="{Binding SaveConfigCommand}"
  31. CommandParameter="MenuSaveConfig"
  32. Header="{DynamicResource MenuSaveConfig}">
  33. <MenuItem.Icon>
  34. <PathIcon Data="{StaticResource SaveGeometry}" />
  35. </MenuItem.Icon>
  36. </MenuItem>
  37. <MenuItem
  38. Command="{Binding LoadConfigCommand}"
  39. CommandParameter="MenuLoadConfig"
  40. Header="{DynamicResource MenuLoadConfig}">
  41. <MenuItem.Icon>
  42. <PathIcon Data="{StaticResource OpenGeometry}" />
  43. </MenuItem.Icon>
  44. </MenuItem>
  45. <Separator />
  46. <MenuItem
  47. Command="{Binding DataReviewCommand}"
  48. CommandParameter="MenuDataReview"
  49. Header="{DynamicResource MenuDataReview}">
  50. <MenuItem.Icon>
  51. <PathIcon Data="{StaticResource WaveGeometry}" />
  52. </MenuItem.Icon>
  53. </MenuItem>
  54. <Separator />
  55. <MenuItem Command="{Binding ExitCommand}" Header="{DynamicResource MenuExit}">
  56. <MenuItem.Icon>
  57. <PathIcon Data="{StaticResource ExitGeometry}" />
  58. </MenuItem.Icon>
  59. </MenuItem>
  60. </MenuItem>
  61. <MenuItem Header="{DynamicResource MenuDevice}">
  62. <MenuItem
  63. Command="{Binding DeviceMangerCommand}"
  64. CommandParameter="MenuManger"
  65. Header="{DynamicResource MenuManger}"
  66. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=!LocalIsConnect}"
  67. IsVisible="{Binding Source={x:Static vm:ShakerSettingViewModel.Instance}, Path=WorkingMode, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model:WorkingMode.Local}}" />
  68. <MenuItem
  69. Command="{Binding ConnectCommand}"
  70. CommandParameter="MenuConnect"
  71. Header="{DynamicResource MenuConnect}"
  72. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=!LocalIsConnect}"
  73. IsVisible="{Binding Source={x:Static vm:ShakerSettingViewModel.Instance}, Path=WorkingMode, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model:WorkingMode.Remote}}" />
  74. <MenuItem
  75. Command="{Binding DisConnectCommand}"
  76. Header="{DynamicResource MenuDisConnect}"
  77. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}" />
  78. <MenuItem
  79. Command="{Binding ShakerConfigCommand}"
  80. CommandParameter="MenuDeviceConfig"
  81. Header="{DynamicResource MenuDeviceConfig}"
  82. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}" />
  83. <Separator />
  84. <MenuItem
  85. Command="{Binding ShakerControlCommand}"
  86. CommandParameter="MenuShakerControl"
  87. Header="{DynamicResource MenuShakerControl}"
  88. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}" />
  89. <Separator />
  90. <MenuItem
  91. Command="{Binding OilControlCommand}"
  92. CommandParameter="MenuOilSourceControl"
  93. Header="{DynamicResource MenuOilSourceControl}">
  94. <MenuItem.IsEnabled>
  95. <MultiBinding Converter="{StaticResource MutliBoolConverter}">
  96. <MultiBinding.Bindings>
  97. <Binding Path="LocalIsConnect" Source="{x:Static vm:CommunicationViewModel.Instance}" />
  98. <Binding Path="IsEnabled" Source="{x:Static vm:OilSourceStatusViewModel.Instance}" />
  99. </MultiBinding.Bindings>
  100. </MultiBinding>
  101. </MenuItem.IsEnabled>
  102. </MenuItem>
  103. <Separator IsVisible="{Binding CanDebug}" />
  104. <MenuItem
  105. Command="{Binding DebugCommand}"
  106. CommandParameter="MenuDebug"
  107. Header="{DynamicResource MenuDebug}"
  108. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}"
  109. IsVisible="{Binding CanDebug}" />
  110. <MenuItem
  111. Command="{Binding ChannelSettingCommand}"
  112. CommandParameter="MenuChannelSetting"
  113. Header="{DynamicResource MenuChannelSetting}"
  114. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}"
  115. IsVisible="{Binding CanDebug}" />
  116. </MenuItem>
  117. <MenuItem Header="{DynamicResource MenuTest}" IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}">
  118. <MenuItem.Styles>
  119. <Style Selector="MenuItem.Selected">
  120. <Setter Property="Icon">
  121. <Setter.Value>
  122. <Template>
  123. <PathIcon Data="{x:Static suki:Icons.Check}" />
  124. </Template>
  125. </Setter.Value>
  126. </Setter>
  127. </Style>
  128. </MenuItem.Styles>
  129. <MenuItem
  130. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.SinePage}}"
  131. Command="{Binding SelectTestTypeCommand}"
  132. CommandParameter="{x:Static model1:MainPageType.SinePage}"
  133. Header="{DynamicResource MenuSine}"
  134. IsEnabled="{Binding Source={x:Static vm:ShakerStatusViewModel.Instance}, Path=IsSignalGenStart, Converter={StaticResource BooleanNonConverter}}" />
  135. <MenuItem
  136. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.RandomPage}}"
  137. Command="{Binding SelectTestTypeCommand}"
  138. CommandParameter="{x:Static model1:MainPageType.RandomPage}"
  139. Header="{DynamicResource MenuRandom}"
  140. IsEnabled="{Binding Source={x:Static vm:ShakerStatusViewModel.Instance}, Path=IsSignalGenStart, Converter={StaticResource BooleanNonConverter}}" />
  141. <MenuItem
  142. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.OutSignal}}"
  143. Command="{Binding SelectTestTypeCommand}"
  144. CommandParameter="{x:Static model1:MainPageType.OutSignal}"
  145. Header="{DynamicResource OutInputSignal}"
  146. IsEnabled="{Binding Source={x:Static vm:ShakerStatusViewModel.Instance}, Path=IsSignalGenStart, Converter={StaticResource BooleanNonConverter}}" />
  147. <Separator />
  148. <MenuItem
  149. Command="{Binding SignalPreviewCommand}"
  150. CommandParameter="SignalPreview"
  151. Header="{DynamicResource SignalPreview}" />
  152. <Separator />
  153. <MenuItem
  154. Classes.NoTest="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.StartPage}}"
  155. Command="{Binding SelectTestTypeCommand}"
  156. CommandParameter="{x:Static model1:MainPageType.StartPage}"
  157. Header="{DynamicResource MenuExitTest}"
  158. IsEnabled="{Binding Source={x:Static vm:ShakerStatusViewModel.Instance}, Path=IsSignalGenStart, Converter={StaticResource BooleanNonConverter}}">
  159. <MenuItem.Styles>
  160. <Style Selector="MenuItem.NoTest">
  161. <Setter Property="IsEnabled" Value="False" />
  162. </Style>
  163. </MenuItem.Styles>
  164. </MenuItem>
  165. </MenuItem>
  166. <MenuItem Classes.NoTest="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.StartPage}}" Header="{DynamicResource MenuTestConfig}">
  167. <MenuItem.Styles>
  168. <Style Selector="MenuItem.NoTest">
  169. <Setter Property="IsEnabled" Value="False" />
  170. </Style>
  171. </MenuItem.Styles>
  172. <MenuItem
  173. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.SinePage}}"
  174. Command="{Binding SweepConfigCommand}"
  175. CommandParameter="MenuSineTestConfig"
  176. Header="{DynamicResource MenuSineTestConfig}">
  177. <MenuItem.Styles>
  178. <Style Selector="MenuItem.Selected">
  179. <Setter Property="IsEnabled" Value="True" />
  180. </Style>
  181. <Style Selector="MenuItem">
  182. <Setter Property="IsEnabled" Value="False" />
  183. </Style>
  184. </MenuItem.Styles>
  185. </MenuItem>
  186. <MenuItem
  187. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.RandomPage}}"
  188. Command="{Binding RandomConfigCommand}"
  189. CommandParameter="MenuRandomTestConfig"
  190. Header="{DynamicResource MenuRandomTestConfig}">
  191. <MenuItem.Styles>
  192. <Style Selector="MenuItem.Selected">
  193. <Setter Property="IsEnabled" Value="True" />
  194. </Style>
  195. <Style Selector="MenuItem">
  196. <Setter Property="IsEnabled" Value="False" />
  197. </Style>
  198. </MenuItem.Styles>
  199. </MenuItem>
  200. </MenuItem>
  201. <MenuItem Header="{DynamicResource MenuAbout}">
  202. <MenuItem
  203. Command="{Binding SettingCommand}"
  204. CommandParameter="MenuSetting"
  205. Header="{DynamicResource MenuSetting}">
  206. <MenuItem.Icon>
  207. <PathIcon Data="{StaticResource SettingGeometry}" />
  208. </MenuItem.Icon>
  209. </MenuItem>
  210. <MenuItem
  211. Command="{Binding UpbitfileCommand}"
  212. CommandParameter="UpBitfile"
  213. Header="{DynamicResource UpBitfile}"
  214. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}">
  215. <MenuItem.Icon>
  216. <PathIcon Data="{StaticResource UpbitfileGeometry}" />
  217. </MenuItem.Icon>
  218. </MenuItem>
  219. <MenuItem
  220. Command="{Binding LogCommand}"
  221. CommandParameter="MenuLog"
  222. Header="{DynamicResource MenuLog}">
  223. <MenuItem.Icon>
  224. <PathIcon Data="{StaticResource LogGeometry}" />
  225. </MenuItem.Icon>
  226. </MenuItem>
  227. <MenuItem
  228. Command="{Binding AboutCommand}"
  229. CommandParameter="MenuAbout"
  230. Header="{DynamicResource MenuAbout}">
  231. <MenuItem.Icon>
  232. <PathIcon Data="{StaticResource AboutGeometry}" />
  233. </MenuItem.Icon>
  234. </MenuItem>
  235. </MenuItem>
  236. </suki:SukiWindow.MenuItems>
  237. <Interaction.Behaviors>
  238. <EventTriggerBehavior EventName="Closing">
  239. <InvokeCommandAction Command="{Binding CloseCommand}" />
  240. </EventTriggerBehavior>
  241. </Interaction.Behaviors>
  242. <suki:SukiWindow.Hosts>
  243. <suki:SukiToastHost Manager="{Binding ToastManager}" />
  244. <suki:SukiDialogHost Manager="{Binding DialogManager}" />
  245. </suki:SukiWindow.Hosts>
  246. <ContentPresenter Content="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=Content, Converter={StaticResource Type2ViewConverter}}" Foreground="Black" />
  247. </suki:SukiWindow>