MainWindow.axaml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  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. <MenuItem Header="{DynamicResource MenuTest}" IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}">
  112. <MenuItem.Styles>
  113. <Style Selector="MenuItem.Selected">
  114. <Setter Property="Icon">
  115. <Setter.Value>
  116. <Template>
  117. <PathIcon Data="{x:Static suki:Icons.Check}" />
  118. </Template>
  119. </Setter.Value>
  120. </Setter>
  121. <Setter Property="IsEnabled" Value="False" />
  122. </Style>
  123. </MenuItem.Styles>
  124. <MenuItem
  125. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.SinePage}}"
  126. Command="{Binding SelectTestTypeCommand}"
  127. CommandParameter="{x:Static model1:MainPageType.SinePage}"
  128. Header="{DynamicResource MenuSine}" />
  129. <MenuItem
  130. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.RandomPage}}"
  131. Command="{Binding SelectTestTypeCommand}"
  132. CommandParameter="{x:Static model1:MainPageType.RandomPage}"
  133. Header="{DynamicResource MenuRandom}" />
  134. <MenuItem
  135. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.OutSignal}}"
  136. Command="{Binding SelectTestTypeCommand}"
  137. CommandParameter="{x:Static model1:MainPageType.OutSignal}"
  138. Header="{DynamicResource OutInputSignal}" />
  139. <Separator />
  140. <MenuItem
  141. Command="{Binding SignalPreviewCommand}"
  142. CommandParameter="SignalPreview"
  143. Header="{DynamicResource SignalPreview}" />
  144. <Separator />
  145. <MenuItem
  146. Classes.NoTest="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.StartPage}}"
  147. Command="{Binding SelectTestTypeCommand}"
  148. CommandParameter="{x:Static model1:MainPageType.StartPage}"
  149. Header="{DynamicResource MenuExitTest}">
  150. <MenuItem.Styles>
  151. <Style Selector="MenuItem.NoTest">
  152. <Setter Property="IsEnabled" Value="False" />
  153. </Style>
  154. </MenuItem.Styles>
  155. </MenuItem>
  156. </MenuItem>
  157. <MenuItem Classes.NoTest="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.StartPage}}" Header="{DynamicResource MenuTestConfig}">
  158. <MenuItem.Styles>
  159. <Style Selector="MenuItem.NoTest">
  160. <Setter Property="IsEnabled" Value="False" />
  161. </Style>
  162. </MenuItem.Styles>
  163. <MenuItem
  164. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.SinePage}}"
  165. Command="{Binding SweepConfigCommand}"
  166. CommandParameter="MenuSineTestConfig"
  167. Header="{DynamicResource MenuSineTestConfig}">
  168. <MenuItem.Styles>
  169. <Style Selector="MenuItem.Selected">
  170. <Setter Property="IsEnabled" Value="True" />
  171. </Style>
  172. <Style Selector="MenuItem">
  173. <Setter Property="IsEnabled" Value="False" />
  174. </Style>
  175. </MenuItem.Styles>
  176. </MenuItem>
  177. <MenuItem
  178. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.RandomPage}}"
  179. Command="{Binding RandomConfigCommand}"
  180. CommandParameter="MenuRandomTestConfig"
  181. Header="{DynamicResource MenuRandomTestConfig}">
  182. <MenuItem.Styles>
  183. <Style Selector="MenuItem.Selected">
  184. <Setter Property="IsEnabled" Value="True" />
  185. </Style>
  186. <Style Selector="MenuItem">
  187. <Setter Property="IsEnabled" Value="False" />
  188. </Style>
  189. </MenuItem.Styles>
  190. </MenuItem>
  191. </MenuItem>
  192. <MenuItem Header="{DynamicResource MenuAbout}">
  193. <MenuItem
  194. Command="{Binding SettingCommand}"
  195. CommandParameter="MenuSetting"
  196. Header="{DynamicResource MenuSetting}">
  197. <MenuItem.Icon>
  198. <PathIcon Data="{StaticResource SettingGeometry}" />
  199. </MenuItem.Icon>
  200. </MenuItem>
  201. <MenuItem
  202. Command="{Binding UpbitfileCommand}"
  203. CommandParameter="UpBitfile"
  204. Header="{DynamicResource UpBitfile}"
  205. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}">
  206. <MenuItem.Icon>
  207. <PathIcon Data="{StaticResource UpbitfileGeometry}" />
  208. </MenuItem.Icon>
  209. </MenuItem>
  210. <MenuItem
  211. Command="{Binding LogCommand}"
  212. CommandParameter="MenuLog"
  213. Header="{DynamicResource MenuLog}">
  214. <MenuItem.Icon>
  215. <PathIcon Data="{StaticResource LogGeometry}" />
  216. </MenuItem.Icon>
  217. </MenuItem>
  218. <MenuItem
  219. Command="{Binding AboutCommand}"
  220. CommandParameter="MenuAbout"
  221. Header="{DynamicResource MenuAbout}">
  222. <MenuItem.Icon>
  223. <PathIcon Data="{StaticResource AboutGeometry}" />
  224. </MenuItem.Icon>
  225. </MenuItem>
  226. </MenuItem>
  227. </suki:SukiWindow.MenuItems>
  228. <Interaction.Behaviors>
  229. <EventTriggerBehavior EventName="Closing">
  230. <InvokeCommandAction Command="{Binding CloseCommand}" />
  231. </EventTriggerBehavior>
  232. </Interaction.Behaviors>
  233. <suki:SukiWindow.Hosts>
  234. <suki:SukiToastHost Manager="{Binding ToastManager}" />
  235. <suki:SukiDialogHost Manager="{Binding DialogManager}" />
  236. </suki:SukiWindow.Hosts>
  237. <ContentPresenter Content="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=Content, Converter={StaticResource Type2ViewConverter}}" Foreground="Black" />
  238. </suki:SukiWindow>