MainWindow.axaml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  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. FontFamily="{StaticResource AlibabaPuHuiTi}"
  20. FontStyle="Normal"
  21. FontWeight="Medium"
  22. IsMenuVisible="True"
  23. mc:Ignorable="d">
  24. <Interaction.Behaviors>
  25. <EventTriggerBehavior EventName="Closing">
  26. <InvokeCommandAction Command="{Binding CloseCommand}" />
  27. </EventTriggerBehavior>
  28. </Interaction.Behaviors>
  29. <suki:SukiWindow.Hosts>
  30. <suki:SukiToastHost Manager="{Binding ToastManager}" />
  31. <suki:SukiDialogHost Manager="{Binding DialogManager}" />
  32. </suki:SukiWindow.Hosts>
  33. <suki:SukiWindow.MenuItems>
  34. <MenuItem Header="{DynamicResource MenuFile}">
  35. <MenuItem
  36. Command="{Binding SaveConfigCommand}"
  37. CommandParameter="MenuSaveConfig"
  38. Header="{DynamicResource MenuSaveConfig}">
  39. <MenuItem.Icon>
  40. <PathIcon Data="{StaticResource SaveGeometry}" />
  41. </MenuItem.Icon>
  42. </MenuItem>
  43. <MenuItem
  44. Command="{Binding LoadConfigCommand}"
  45. CommandParameter="MenuLoadConfig"
  46. Header="{DynamicResource MenuLoadConfig}">
  47. <MenuItem.Icon>
  48. <PathIcon Data="{StaticResource OpenGeometry}" />
  49. </MenuItem.Icon>
  50. </MenuItem>
  51. <MenuItem Header="{DynamicResource MenuSaveSweepConfig}">
  52. <MenuItem.Icon>
  53. <PathIcon Data="{StaticResource SaveGeometry}" />
  54. </MenuItem.Icon>
  55. </MenuItem>
  56. <MenuItem Header="{DynamicResource MenuLoadSweepConfig}">
  57. <MenuItem.Icon>
  58. <PathIcon Data="{StaticResource OpenGeometry}" />
  59. </MenuItem.Icon>
  60. </MenuItem>
  61. <Separator />
  62. <MenuItem Command="{Binding ExitCommand}" Header="{DynamicResource MenuExit}">
  63. <MenuItem.Icon>
  64. <PathIcon Data="{StaticResource ExitGeometry}" />
  65. </MenuItem.Icon>
  66. </MenuItem>
  67. </MenuItem>
  68. <MenuItem Header="{DynamicResource MenuDevice}">
  69. <MenuItem
  70. Command="{Binding DeviceMangerCommand}"
  71. CommandParameter="MenuManger"
  72. Header="{DynamicResource MenuManger}"
  73. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Intance}, Path=!LocalIsConnect}"
  74. IsVisible="{Binding Source={x:Static vm:ShakerSettingViewModel.Instance}, Path=WorkingMode, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model:WorkingMode.Local}}" />
  75. <MenuItem
  76. CommandParameter="MenuConnect"
  77. Header="{DynamicResource MenuConnect}"
  78. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Intance}, Path=!LocalIsConnect}"
  79. IsVisible="{Binding Source={x:Static vm:ShakerSettingViewModel.Instance}, Path=WorkingMode, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model:WorkingMode.Remote}}" />
  80. <MenuItem Header="{DynamicResource MenuDisConnect}" IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Intance}, Path=LocalIsConnect}" />
  81. <MenuItem
  82. Command="{Binding ShakerConfigCommand}"
  83. CommandParameter="MenuDeviceConfig"
  84. Header="{DynamicResource MenuDeviceConfig}"
  85. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Intance}, Path=LocalIsConnect}" />
  86. <Separator />
  87. <MenuItem
  88. Command="{Binding ShakerControlCommand}"
  89. CommandParameter="MenuShakerControl"
  90. Header="{DynamicResource MenuShakerControl}"
  91. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Intance}, Path=LocalIsConnect}" />
  92. <Separator />
  93. <MenuItem
  94. Classes.Connected="{Binding Source={x:Static vm:CommunicationViewModel.Intance}, Path=LocalIsConnect}"
  95. Classes.OilEnabled="{Binding Source={x:Static vm:OilSourceStatusViewModel.Instance}, Path=IsEnabled}"
  96. Command="{Binding OilControlCommand}"
  97. CommandParameter="OilSourceControl"
  98. Header="{DynamicResource OilSourceControl}">
  99. <MenuItem.Styles>
  100. <Style Selector="MenuItem">
  101. <Setter Property="IsEnabled" Value="False" />
  102. </Style>
  103. <Style Selector="MenuItem.OilEnabled">
  104. <Setter Property="IsEnabled" Value="True" />
  105. </Style>
  106. <Style Selector="MenuItem.Connected">
  107. <Setter Property="IsEnabled" Value="True" />
  108. </Style>
  109. </MenuItem.Styles>
  110. </MenuItem>
  111. <Separator IsVisible="{Binding CanDebug}" />
  112. <MenuItem
  113. Command="{Binding DebugCommand}"
  114. CommandParameter="MenuDebug"
  115. Header="{DynamicResource MenuDebug}"
  116. IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Intance}, Path=LocalIsConnect}"
  117. IsVisible="{Binding CanDebug}" />
  118. </MenuItem>
  119. <MenuItem Header="{DynamicResource MenuTest}" IsEnabled="{Binding Source={x:Static vm:CommunicationViewModel.Intance}, Path=LocalIsConnect}">
  120. <MenuItem.Styles>
  121. <Style Selector="MenuItem.Selected">
  122. <Setter Property="Icon">
  123. <Setter.Value>
  124. <Template>
  125. <PathIcon Data="{x:Static suki:Icons.Check}" />
  126. </Template>
  127. </Setter.Value>
  128. </Setter>
  129. <Setter Property="IsEnabled" Value="False" />
  130. </Style>
  131. </MenuItem.Styles>
  132. <MenuItem
  133. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.SinePage}}"
  134. Command="{Binding SelectTestTypeCommand}"
  135. CommandParameter="{x:Static model1:MainPageType.SinePage}"
  136. Header="{DynamicResource MenuSine}" />
  137. <MenuItem
  138. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.RandomPage}}"
  139. Command="{Binding SelectTestTypeCommand}"
  140. CommandParameter="{x:Static model1:MainPageType.RandomPage}"
  141. Header="{DynamicResource MenuRandom}" />
  142. <MenuItem
  143. Classes.Selected="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.OutSignal}}"
  144. Command="{Binding SelectTestTypeCommand}"
  145. CommandParameter="{x:Static model1:MainPageType.OutSignal}"
  146. Header="{DynamicResource OutInputSignal}" />
  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. <MenuItem.Styles>
  159. <Style Selector="MenuItem.NoTest">
  160. <Setter Property="IsEnabled" Value="False" />
  161. </Style>
  162. </MenuItem.Styles>
  163. </MenuItem>
  164. </MenuItem>
  165. <MenuItem Classes.NoTest="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=MainPageType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model1:MainPageType.StartPage}}" Header="{DynamicResource MenuTestConfig}">
  166. <MenuItem.Styles>
  167. <Style Selector="MenuItem.NoTest">
  168. <Setter Property="IsEnabled" Value="False" />
  169. <Setter Property="Foreground" Value="Gray" />
  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 AboutCommand}"
  212. CommandParameter="MenuAbout"
  213. Header="{DynamicResource MenuAbout}">
  214. <MenuItem.Icon>
  215. <PathIcon Data="{StaticResource AboutGeometry}" />
  216. </MenuItem.Icon>
  217. </MenuItem>
  218. </MenuItem>
  219. </suki:SukiWindow.MenuItems>
  220. <ContentPresenter Content="{Binding Source={x:Static vm:MainPageViewModel.Instance}, Path=Content, Converter={StaticResource Type2ViewConverter}}" />
  221. </suki:SukiWindow>