MainWindow.axaml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  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 Command="{Binding ExitCommand}" Header="{DynamicResource MenuExit}">
  47. <MenuItem.Icon>
  48. <PathIcon Data="{StaticResource ExitGeometry}" />
  49. </MenuItem.Icon>
  50. </MenuItem>
  51. </MenuItem>
  52. <MenuItem Header="{DynamicResource MenuDevice}">
  53. <MenuItem
  54. Command="{Binding DeviceMangerCommand}"
  55. CommandParameter="MenuManger"
  56. Header="{DynamicResource MenuManger}"
  57. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=!LocalIsConnect}"
  58. IsVisible="{Binding Source={x:Static vm:ShakerSettingViewModel.Instance}, Path=WorkingMode, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model:WorkingMode.Local}}" />
  59. <MenuItem
  60. Command="{Binding ConnectCommand}"
  61. CommandParameter="MenuConnect"
  62. Header="{DynamicResource MenuConnect}"
  63. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=!LocalIsConnect}"
  64. IsVisible="{Binding Source={x:Static vm:ShakerSettingViewModel.Instance}, Path=WorkingMode, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model:WorkingMode.Remote}}" />
  65. <MenuItem
  66. Command="{Binding DisConnectCommand}"
  67. Header="{DynamicResource MenuDisConnect}"
  68. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}" />
  69. <MenuItem
  70. Command="{Binding ShakerConfigCommand}"
  71. CommandParameter="MenuDeviceConfig"
  72. Header="{DynamicResource MenuDeviceConfig}"
  73. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}" />
  74. <Separator />
  75. <MenuItem
  76. Command="{Binding ShakerControlCommand}"
  77. CommandParameter="MenuShakerControl"
  78. Header="{DynamicResource MenuShakerControl}"
  79. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}" />
  80. <Separator />
  81. <MenuItem
  82. Command="{Binding OilControlCommand}"
  83. CommandParameter="MenuOilSourceControl"
  84. Header="{DynamicResource MenuOilSourceControl}">
  85. <MenuItem.IsEnabled>
  86. <MultiBinding Converter="{StaticResource MutliBoolConverter}">
  87. <MultiBinding.Bindings>
  88. <Binding Path="LocalIsConnect" Source="{x:Static vm:CommunicationViewModel.Instance}" />
  89. <Binding Path="IsEnabled" Source="{x:Static vm:OilSourceStatusViewModel.Instance}" />
  90. </MultiBinding.Bindings>
  91. </MultiBinding>
  92. </MenuItem.IsEnabled>
  93. </MenuItem>
  94. <Separator IsVisible="{Binding CanDebug}" />
  95. <MenuItem
  96. Command="{Binding DebugCommand}"
  97. CommandParameter="MenuDebug"
  98. Header="{DynamicResource MenuDebug}"
  99. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}"
  100. IsVisible="{Binding CanDebug}" />
  101. </MenuItem>
  102. <MenuItem Header="{DynamicResource MenuTest}" IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}">
  103. <MenuItem.Styles>
  104. <Style Selector="MenuItem.Selected">
  105. <Setter Property="Icon">
  106. <Setter.Value>
  107. <Template>
  108. <PathIcon Data="{x:Static suki:Icons.Check}" />
  109. </Template>
  110. </Setter.Value>
  111. </Setter>
  112. <Setter Property="IsEnabled" Value="False" />
  113. </Style>
  114. </MenuItem.Styles>
  115. <MenuItem
  116. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.SinePage}}"
  117. Command="{Binding SelectTestTypeCommand}"
  118. CommandParameter="{x:Static model1:MainPageType.SinePage}"
  119. Header="{DynamicResource MenuSine}" />
  120. <MenuItem
  121. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.RandomPage}}"
  122. Command="{Binding SelectTestTypeCommand}"
  123. CommandParameter="{x:Static model1:MainPageType.RandomPage}"
  124. Header="{DynamicResource MenuRandom}" />
  125. <MenuItem
  126. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.OutSignal}}"
  127. Command="{Binding SelectTestTypeCommand}"
  128. CommandParameter="{x:Static model1:MainPageType.OutSignal}"
  129. Header="{DynamicResource OutInputSignal}" />
  130. <Separator />
  131. <MenuItem
  132. Command="{Binding SignalPreviewCommand}"
  133. CommandParameter="SignalPreview"
  134. Header="{DynamicResource SignalPreview}" />
  135. <Separator />
  136. <MenuItem
  137. Classes.NoTest="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.StartPage}}"
  138. Command="{Binding SelectTestTypeCommand}"
  139. CommandParameter="{x:Static model1:MainPageType.StartPage}"
  140. Header="{DynamicResource MenuExitTest}">
  141. <MenuItem.Styles>
  142. <Style Selector="MenuItem.NoTest">
  143. <Setter Property="IsEnabled" Value="False" />
  144. </Style>
  145. </MenuItem.Styles>
  146. </MenuItem>
  147. </MenuItem>
  148. <MenuItem Classes.NoTest="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.StartPage}}" Header="{DynamicResource MenuTestConfig}">
  149. <MenuItem.Styles>
  150. <Style Selector="MenuItem.NoTest">
  151. <Setter Property="IsEnabled" Value="False" />
  152. </Style>
  153. </MenuItem.Styles>
  154. <MenuItem
  155. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.SinePage}}"
  156. Command="{Binding SweepConfigCommand}"
  157. CommandParameter="MenuSineTestConfig"
  158. Header="{DynamicResource MenuSineTestConfig}">
  159. <MenuItem.Styles>
  160. <Style Selector="MenuItem.Selected">
  161. <Setter Property="IsEnabled" Value="True" />
  162. </Style>
  163. <Style Selector="MenuItem">
  164. <Setter Property="IsEnabled" Value="False" />
  165. </Style>
  166. </MenuItem.Styles>
  167. </MenuItem>
  168. <MenuItem
  169. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.RandomPage}}"
  170. Command="{Binding RandomConfigCommand}"
  171. CommandParameter="MenuRandomTestConfig"
  172. Header="{DynamicResource MenuRandomTestConfig}">
  173. <MenuItem.Styles>
  174. <Style Selector="MenuItem.Selected">
  175. <Setter Property="IsEnabled" Value="True" />
  176. </Style>
  177. <Style Selector="MenuItem">
  178. <Setter Property="IsEnabled" Value="False" />
  179. </Style>
  180. </MenuItem.Styles>
  181. </MenuItem>
  182. </MenuItem>
  183. <MenuItem Header="{DynamicResource MenuAbout}">
  184. <MenuItem
  185. Command="{Binding SettingCommand}"
  186. CommandParameter="MenuSetting"
  187. Header="{DynamicResource MenuSetting}">
  188. <MenuItem.Icon>
  189. <PathIcon Data="{StaticResource SettingGeometry}" />
  190. </MenuItem.Icon>
  191. </MenuItem>
  192. <MenuItem
  193. Command="{Binding UpbitfileCommand}"
  194. CommandParameter="UpBitfile"
  195. Header="{DynamicResource UpBitfile}"
  196. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Instance}, Path=LocalIsConnect}">
  197. <MenuItem.Icon>
  198. <PathIcon Data="{StaticResource UpbitfileGeometry}" />
  199. </MenuItem.Icon>
  200. </MenuItem>
  201. <MenuItem
  202. Command="{Binding LogCommand}"
  203. CommandParameter="MenuLog"
  204. Header="{DynamicResource MenuLog}">
  205. <MenuItem.Icon>
  206. <PathIcon Data="{StaticResource LogGeometry}" />
  207. </MenuItem.Icon>
  208. </MenuItem>
  209. <MenuItem
  210. Command="{Binding AboutCommand}"
  211. CommandParameter="MenuAbout"
  212. Header="{DynamicResource MenuAbout}">
  213. <MenuItem.Icon>
  214. <PathIcon Data="{StaticResource AboutGeometry}" />
  215. </MenuItem.Icon>
  216. </MenuItem>
  217. </MenuItem>
  218. </suki:SukiWindow.MenuItems>
  219. <Interaction.Behaviors>
  220. <EventTriggerBehavior EventName="Closing">
  221. <InvokeCommandAction Command="{Binding CloseCommand}" />
  222. </EventTriggerBehavior>
  223. </Interaction.Behaviors>
  224. <suki:SukiWindow.Hosts>
  225. <suki:SukiToastHost Manager="{Binding ToastManager}" />
  226. <suki:SukiDialogHost Manager="{Binding DialogManager}" />
  227. </suki:SukiWindow.Hosts>
  228. <ContentPresenter Content="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=Content, Converter={StaticResource Type2ViewConverter}}" Foreground="Black" />
  229. </suki:SukiWindow>