VibrationPara.xaml 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806
  1. <UserControl x:Class="TeamAAS_VP.Controls.VibrationPara"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:local="clr-namespace:TeamAAS_VP.Controls"
  7. xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
  8. xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
  9. xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
  10. xmlns:sys="clr-namespace:System;assembly=mscorlib"
  11. xmlns:convert="clr-namespace:TeamAAS_VP.ValueConverter"
  12. xmlns:fenum="clr-namespace:Team.FFFeederService.Enums;assembly=Team.FFFeederService"
  13. xmlns:lex="http://wpflocalizeextension.codeplex.com"
  14. lex:LocalizeDictionary.DesignCulture="zh-CN"
  15. lex:ResxLocalizationProvider.DefaultAssembly="TeamAAS-VP"
  16. lex:ResxLocalizationProvider.DefaultDictionary="Lang"
  17. mc:Ignorable="d"
  18. d:DesignHeight="600"
  19. d:DesignWidth="700"
  20. d:Background="White"
  21. FontFamily="{DynamicResource DefaultFont}">
  22. <UserControl.Resources>
  23. <convert:NoneWaveConverter x:Key="NoneWaveConverter" />
  24. </UserControl.Resources>
  25. <Viewbox Stretch="Uniform">
  26. <Grid>
  27. <Grid.RowDefinitions>
  28. <RowDefinition Height="Auto" />
  29. <RowDefinition />
  30. <RowDefinition Height="Auto" />
  31. </Grid.RowDefinitions>
  32. <StackPanel Grid.Column="0"
  33. Margin="4,0"
  34. Orientation="Horizontal">
  35. <ComboBox x:Name="ComboBoxSequence"
  36. MinWidth="30"
  37. Margin="10,0"
  38. HorizontalContentAlignment="Center"
  39. materialDesign:HintAssist.Hint="{lex:Loc 选择振动集}"
  40. materialDesign:HintAssist.IsFloating="True"
  41. ItemsSource="{Binding ProgramCollection}"
  42. SelectedIndex="{Binding SelectProgram}">
  43. <b:Interaction.Triggers>
  44. <b:EventTrigger EventName="SelectionChanged">
  45. <b:InvokeCommandAction Command="{Binding SelectProgramCommand}" />
  46. </b:EventTrigger>
  47. </b:Interaction.Triggers>
  48. </ComboBox>
  49. <ComboBox x:Name="ComboBoxShakeMotions"
  50. MinWidth="30"
  51. Margin="10,0"
  52. HorizontalContentAlignment="Center"
  53. materialDesign:HintAssist.Hint="{lex:Loc 选择动作}"
  54. materialDesign:HintAssist.IsFloating="True"
  55. SelectedIndex="{Binding SelectedShakeMotionIndex}">
  56. <b:Interaction.Triggers>
  57. <b:EventTrigger EventName="SelectionChanged">
  58. <b:InvokeCommandAction Command="{Binding SelectActionCommand}"
  59. CommandParameter="{Binding ElementName=ComboBoxShakeMotions, Path=SelectedIndex}" />
  60. </b:EventTrigger>
  61. </b:Interaction.Triggers>
  62. <!--A-->
  63. <ComboBoxItem>
  64. <StackPanel Orientation="Horizontal">
  65. <TextBlock Text="A"
  66. VerticalAlignment="Center" />
  67. <materialDesign:PackIcon Kind="ArrowLeftBold"
  68. Margin="5,0" />
  69. </StackPanel>
  70. </ComboBoxItem>
  71. <!--B-->
  72. <ComboBoxItem>
  73. <StackPanel Orientation="Horizontal">
  74. <TextBlock Text="B"
  75. VerticalAlignment="Center" />
  76. <materialDesign:PackIcon Kind="ArrowBottomLeftThick"
  77. Margin="5,0" />
  78. </StackPanel>
  79. </ComboBoxItem>
  80. <!--C-->
  81. <ComboBoxItem>
  82. <StackPanel Orientation="Horizontal">
  83. <TextBlock Text="C"
  84. VerticalAlignment="Center" />
  85. <materialDesign:PackIcon Kind="ArrowTopLeftThick"
  86. Margin="5,0" />
  87. </StackPanel>
  88. </ComboBoxItem>
  89. <!--D-->
  90. <ComboBoxItem>
  91. <StackPanel Orientation="Horizontal">
  92. <TextBlock Text="D"
  93. VerticalAlignment="Center" />
  94. <materialDesign:PackIcon Kind="ArrowDownBold"
  95. Margin="5,0" />
  96. </StackPanel>
  97. </ComboBoxItem>
  98. <!--E-->
  99. <ComboBoxItem>
  100. <StackPanel Orientation="Horizontal">
  101. <TextBlock Text="E"
  102. VerticalAlignment="Center" />
  103. <materialDesign:PackIcon Kind="ArrowUpBold"
  104. Margin="5,0" />
  105. </StackPanel>
  106. </ComboBoxItem>
  107. <!--F-->
  108. <ComboBoxItem>
  109. <StackPanel Orientation="Horizontal">
  110. <TextBlock Text="F"
  111. VerticalAlignment="Center" />
  112. <materialDesign:PackIcon Kind="ArrowRightBold"
  113. Margin="5,0" />
  114. </StackPanel>
  115. </ComboBoxItem>
  116. <!--G-->
  117. <ComboBoxItem>
  118. <StackPanel Orientation="Horizontal">
  119. <TextBlock Text="G"
  120. VerticalAlignment="Center" />
  121. <materialDesign:PackIcon Kind="ArrowBottomRightThick"
  122. Margin="5,0" />
  123. </StackPanel>
  124. </ComboBoxItem>
  125. <!--H-->
  126. <ComboBoxItem>
  127. <StackPanel Orientation="Horizontal">
  128. <TextBlock Text="H"
  129. VerticalAlignment="Center" />
  130. <materialDesign:PackIcon Kind="ArrowTopRightThick"
  131. Margin="5,0" />
  132. </StackPanel>
  133. </ComboBoxItem>
  134. <!--I-->
  135. <ComboBoxItem>
  136. <StackPanel Orientation="Horizontal">
  137. <TextBlock Text="I"
  138. VerticalAlignment="Center" />
  139. <materialDesign:PackIcon Kind="ArrowExpandAll"
  140. Margin="5,0" />
  141. </StackPanel>
  142. </ComboBoxItem>
  143. <!--J-->
  144. <ComboBoxItem>
  145. <StackPanel Orientation="Horizontal">
  146. <TextBlock Text="J"
  147. VerticalAlignment="Center" />
  148. <materialDesign:PackIcon Kind="ArrowCollapseHorizontal"
  149. Margin="5,0" />
  150. </StackPanel>
  151. </ComboBoxItem>
  152. <!--K-->
  153. <ComboBoxItem>
  154. <StackPanel Orientation="Horizontal">
  155. <TextBlock Text="K"
  156. VerticalAlignment="Center" />
  157. <materialDesign:PackIcon Kind="ArrowCollapseVertical"
  158. Margin="5,0" />
  159. </StackPanel>
  160. </ComboBoxItem>
  161. <!--L-->
  162. <ComboBoxItem>L</ComboBoxItem>
  163. <!--M-->
  164. <ComboBoxItem>M</ComboBoxItem>
  165. <!--N-->
  166. <ComboBoxItem>N</ComboBoxItem>
  167. <!--O-->
  168. <ComboBoxItem>O</ComboBoxItem>
  169. <!--P-->
  170. <ComboBoxItem>P</ComboBoxItem>
  171. <!--Q-->
  172. <ComboBoxItem>Q</ComboBoxItem>
  173. <!--R-->
  174. <ComboBoxItem>R</ComboBoxItem>
  175. <!--S-->
  176. <ComboBoxItem>S</ComboBoxItem>
  177. <!--T-->
  178. <ComboBoxItem>T</ComboBoxItem>
  179. <!--U-->
  180. <ComboBoxItem>U</ComboBoxItem>
  181. <!--V-->
  182. <ComboBoxItem>V</ComboBoxItem>
  183. <!--W-->
  184. <ComboBoxItem>W</ComboBoxItem>
  185. <!--X-->
  186. <ComboBoxItem>X</ComboBoxItem>
  187. <!--Y-->
  188. <ComboBoxItem>Y</ComboBoxItem>
  189. <!--Z-->
  190. <ComboBoxItem>Z</ComboBoxItem>
  191. </ComboBox>
  192. <local:myNumericUpDowm x:Name="nud_duration"
  193. MinWidth="100"
  194. Margin="5,0"
  195. VerticalAlignment="Center"
  196. materialDesign:HintAssist.Foreground="BlueViolet"
  197. materialDesign:HintAssist.Hint="{lex:Loc 持续时间,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}(ms)'}"
  198. materialDesign:HintAssist.IsFloating="True"
  199. Minimum="0"
  200. Maximum="20000"
  201. Interval="100"
  202. StringFormat="{}{0:N0} ms"
  203. Value="{Binding Duration,Mode=TwoWay}">
  204. <b:Interaction.Triggers>
  205. <b:EventTrigger EventName="ValueChanged">
  206. <b:InvokeCommandAction Command="{Binding DurationChangedCommand}"
  207. CommandParameter="{Binding ElementName=nud_duration, Path=Value}" />
  208. </b:EventTrigger>
  209. </b:Interaction.Triggers>
  210. </local:myNumericUpDowm>
  211. <Popup x:Name="SliderPopup"
  212. Width="150"
  213. Height="{Binding ElementName=nud_duration, Path=Height}"
  214. PlacementTarget="{Binding ElementName=nud_duration}"
  215. Placement="Bottom"
  216. AllowsTransparency="True"
  217. StaysOpen="False">
  218. <Grid Background="Transparent">
  219. <Border Background="#575757"
  220. CornerRadius="0,0,3,3">
  221. <Slider x:Name="slider2"
  222. Margin="5,2,5,2"
  223. Foreground="#2196f3"
  224. Maximum="{Binding ElementName=nud_duration, Path=Maximum}"
  225. Minimum="{Binding ElementName=nud_duration, Path=Minimum}"
  226. Value="{Binding ElementName=nud_duration,Path=Value,Mode=TwoWay}" />
  227. </Border>
  228. </Grid>
  229. </Popup>
  230. <Button Margin="4,5"
  231. Command="{Binding ExecuteFromSelected}"
  232. Content="{lex:Loc 执行}"
  233. materialDesign:ButtonAssist.CornerRadius="5"
  234. Cursor="Hand" />
  235. <Button Margin="4,5"
  236. materialDesign:ButtonAssist.CornerRadius="5"
  237. Command="{Binding ExecuteStopCommand}"
  238. Content="{lex:Loc 停止}" />
  239. <Button Margin="5,0"
  240. materialDesign:ButtonAssist.CornerRadius="5"
  241. Command="{Binding SaveParamCommand}"
  242. Content="{lex:Loc 下载参数}"
  243. Cursor="Hand" />
  244. </StackPanel>
  245. <UniformGrid Grid.Row="1">
  246. <GroupBox Margin="4,4"
  247. Header="Motor1">
  248. <UniformGrid Columns="2">
  249. <TextBlock Margin="4,0"
  250. VerticalAlignment="Center"
  251. Text="{lex:Loc 振幅}" />
  252. <local:myNumericUpDowm x:Name="MotorAmplitudeNumeric1"
  253. Margin="4,0"
  254. Minimum="0"
  255. Maximum="100"
  256. Interval="1"
  257. StringFormat="{}{0:N0} %"
  258. Value="{Binding Motor1.Amplitude,Mode=TwoWay}">
  259. <b:Interaction.Triggers>
  260. <b:EventTrigger EventName="ValueChanged">
  261. <b:InvokeCommandAction Command="{Binding VoiceMotorParamChangedCommand}"
  262. CommandParameter="1-1" />
  263. </b:EventTrigger>
  264. </b:Interaction.Triggers>
  265. </local:myNumericUpDowm>
  266. <!--<mah:NumericUpDown x:Name="MotorAmplitudeNumeric1"
  267. Margin="4,0"
  268. StringFormat="{}{0:N0} %"
  269. Value="{Binding VoiceMotorParam1.Amplitude}" />-->
  270. <TextBlock Margin="4,0"
  271. VerticalAlignment="Center"
  272. Text="{lex:Loc 频率}" />
  273. <local:myNumericUpDowm Margin="4,0"
  274. Minimum="0"
  275. Maximum="250"
  276. Interval="1"
  277. StringFormat="{}{0:N0} Hz"
  278. Value="{Binding Motor1.Frequency,Mode=TwoWay}">
  279. <b:Interaction.Triggers>
  280. <b:EventTrigger EventName="ValueChanged">
  281. <b:InvokeCommandAction Command="{Binding VoiceMotorParamChangedCommand}"
  282. CommandParameter="1-2" />
  283. </b:EventTrigger>
  284. </b:Interaction.Triggers>
  285. </local:myNumericUpDowm>
  286. <TextBlock Margin="4,0"
  287. VerticalAlignment="Center"
  288. Text="{lex:Loc 相位}" />
  289. <local:myNumericUpDowm Margin="4,0"
  290. Interval="1"
  291. Maximum="359"
  292. Minimum="0"
  293. StringFormat="{}{0:N0} °"
  294. Value="{Binding Motor1.Phase,Mode=TwoWay}">
  295. <b:Interaction.Triggers>
  296. <b:EventTrigger EventName="ValueChanged">
  297. <b:InvokeCommandAction Command="{Binding VoiceMotorParamChangedCommand}"
  298. CommandParameter="1-3" />
  299. </b:EventTrigger>
  300. </b:Interaction.Triggers>
  301. </local:myNumericUpDowm>
  302. <TextBlock Margin="4,0"
  303. VerticalAlignment="Center"
  304. Text="{lex:Loc 波形}" />
  305. <StackPanel Margin="0,5,0,0"
  306. HorizontalAlignment="Center"
  307. Orientation="Horizontal">
  308. <ToggleButton Width="30"
  309. Height="30"
  310. Margin="2,0"
  311. Content="None"
  312. IsChecked="{Binding Motor1.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=0, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  313. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  314. <b:Interaction.Triggers>
  315. <b:EventTrigger EventName="Click">
  316. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  317. CommandParameter="1-1" />
  318. </b:EventTrigger>
  319. </b:Interaction.Triggers>
  320. </ToggleButton>
  321. <ToggleButton Width="30"
  322. Height="30"
  323. Margin="2,0"
  324. IsChecked="{Binding Motor1.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=1, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  325. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  326. <materialDesign:PackIcon Width="18"
  327. Height="18"
  328. Kind="SineWave" />
  329. <b:Interaction.Triggers>
  330. <b:EventTrigger EventName="Click">
  331. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  332. CommandParameter="1-2" />
  333. </b:EventTrigger>
  334. </b:Interaction.Triggers>
  335. </ToggleButton>
  336. <ToggleButton Width="30"
  337. Height="30"
  338. Margin="2,0"
  339. IsChecked="{Binding Motor1.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=2, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  340. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  341. <materialDesign:PackIcon Width="18"
  342. Height="18"
  343. Kind="SawtoothWave" />
  344. <b:Interaction.Triggers>
  345. <b:EventTrigger EventName="Click">
  346. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  347. CommandParameter="1-3" />
  348. </b:EventTrigger>
  349. </b:Interaction.Triggers>
  350. </ToggleButton>
  351. <ToggleButton Width="30"
  352. Height="30"
  353. Margin="2,0"
  354. IsChecked="{Binding Motor1.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=3, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  355. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  356. <materialDesign:PackIcon Width="18"
  357. Height="18"
  358. Kind="TriangleWave" />
  359. <b:Interaction.Triggers>
  360. <b:EventTrigger EventName="Click">
  361. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  362. CommandParameter="1-4" />
  363. </b:EventTrigger>
  364. </b:Interaction.Triggers>
  365. </ToggleButton>
  366. </StackPanel>
  367. </UniformGrid>
  368. </GroupBox>
  369. <GroupBox Margin="4,4"
  370. Header="Motor3">
  371. <UniformGrid Columns="2">
  372. <TextBlock Margin="4,0"
  373. VerticalAlignment="Center"
  374. Text="{lex:Loc 振幅}" />
  375. <local:myNumericUpDowm x:Name="MotorAmplitudeNumeric3"
  376. Margin="4,0"
  377. Minimum="0"
  378. Maximum="100"
  379. Interval="1"
  380. StringFormat="{}{0:N0} %"
  381. Value="{Binding Motor3.Amplitude,Mode=TwoWay}">
  382. <b:Interaction.Triggers>
  383. <b:EventTrigger EventName="ValueChanged">
  384. <b:InvokeCommandAction Command="{Binding VoiceMotorParamChangedCommand}"
  385. CommandParameter="3-1" />
  386. </b:EventTrigger>
  387. </b:Interaction.Triggers>
  388. </local:myNumericUpDowm>
  389. <TextBlock Margin="4,0"
  390. VerticalAlignment="Center"
  391. Text="{lex:Loc 频率}" />
  392. <local:myNumericUpDowm Margin="4,0"
  393. Minimum="0"
  394. Maximum="250"
  395. Interval="1"
  396. StringFormat="{}{0:N0} Hz"
  397. Value="{Binding Motor3.Frequency,Mode=TwoWay}">
  398. <b:Interaction.Triggers>
  399. <b:EventTrigger EventName="ValueChanged">
  400. <b:InvokeCommandAction Command="{Binding VoiceMotorParamChangedCommand}"
  401. CommandParameter="3-2" />
  402. </b:EventTrigger>
  403. </b:Interaction.Triggers>
  404. </local:myNumericUpDowm>
  405. <TextBlock Margin="4,0"
  406. VerticalAlignment="Center"
  407. Text="{lex:Loc 相位}" />
  408. <local:myNumericUpDowm Margin="4,0"
  409. Interval="1"
  410. Maximum="359"
  411. Minimum="0"
  412. StringFormat="{}{0:N0} °"
  413. Value="{Binding Motor3.Phase,Mode=TwoWay}">
  414. <b:Interaction.Triggers>
  415. <b:EventTrigger EventName="ValueChanged">
  416. <b:InvokeCommandAction Command="{Binding VoiceMotorParamChangedCommand}"
  417. CommandParameter="3-3" />
  418. </b:EventTrigger>
  419. </b:Interaction.Triggers>
  420. </local:myNumericUpDowm>
  421. <TextBlock Margin="4,0"
  422. VerticalAlignment="Center"
  423. Text="{lex:Loc 波形}" />
  424. <StackPanel Margin="0,5,0,0"
  425. HorizontalAlignment="Center"
  426. Orientation="Horizontal">
  427. <ToggleButton Width="30"
  428. Height="30"
  429. Margin="2,0"
  430. Content="None"
  431. IsChecked="{Binding Motor3.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=0, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  432. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  433. <b:Interaction.Triggers>
  434. <b:EventTrigger EventName="Click">
  435. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  436. CommandParameter="3-1" />
  437. </b:EventTrigger>
  438. </b:Interaction.Triggers>
  439. </ToggleButton>
  440. <ToggleButton Width="30"
  441. Height="30"
  442. Margin="2,0"
  443. IsChecked="{Binding Motor3.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=1, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  444. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  445. <materialDesign:PackIcon Width="18"
  446. Height="18"
  447. Kind="SineWave" />
  448. <b:Interaction.Triggers>
  449. <b:EventTrigger EventName="Click">
  450. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  451. CommandParameter="3-2" />
  452. </b:EventTrigger>
  453. </b:Interaction.Triggers>
  454. </ToggleButton>
  455. <ToggleButton Width="32"
  456. Height="32"
  457. Margin="2,0"
  458. IsChecked="{Binding Motor3.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=2, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  459. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  460. <materialDesign:PackIcon Width="18"
  461. Height="18"
  462. Kind="SawtoothWave" />
  463. <b:Interaction.Triggers>
  464. <b:EventTrigger EventName="Click">
  465. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  466. CommandParameter="3-3" />
  467. </b:EventTrigger>
  468. </b:Interaction.Triggers>
  469. </ToggleButton>
  470. <ToggleButton Width="30"
  471. Height="30"
  472. Margin="2,0"
  473. IsChecked="{Binding Motor3.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=3, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  474. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  475. <materialDesign:PackIcon Width="18"
  476. Height="18"
  477. Kind="TriangleWave" />
  478. <b:Interaction.Triggers>
  479. <b:EventTrigger EventName="Click">
  480. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  481. CommandParameter="3-4" />
  482. </b:EventTrigger>
  483. </b:Interaction.Triggers>
  484. </ToggleButton>
  485. </StackPanel>
  486. </UniformGrid>
  487. </GroupBox>
  488. <GroupBox Margin="4,4"
  489. Header="Motor2">
  490. <UniformGrid Columns="2">
  491. <TextBlock Margin="4,0"
  492. VerticalAlignment="Center"
  493. Text="{lex:Loc 振幅}" />
  494. <local:myNumericUpDowm x:Name="MotorAmplitudeNumeric2"
  495. Margin="4,0"
  496. Minimum="0"
  497. Maximum="100"
  498. Interval="1"
  499. StringFormat="{}{0:N0} %"
  500. Value="{Binding Motor2.Amplitude,Mode=TwoWay}">
  501. <b:Interaction.Triggers>
  502. <b:EventTrigger EventName="ValueChanged">
  503. <b:InvokeCommandAction Command="{Binding VoiceMotorParamChangedCommand}"
  504. CommandParameter="2-1" />
  505. </b:EventTrigger>
  506. </b:Interaction.Triggers>
  507. </local:myNumericUpDowm>
  508. <TextBlock Margin="4,0"
  509. VerticalAlignment="Center"
  510. Text="{lex:Loc 频率}" />
  511. <local:myNumericUpDowm Margin="4,0"
  512. Minimum="0"
  513. Maximum="250"
  514. Interval="1"
  515. StringFormat="{}{0:N0} Hz"
  516. Value="{Binding Motor2.Frequency,Mode=TwoWay}">
  517. <b:Interaction.Triggers>
  518. <b:EventTrigger EventName="ValueChanged">
  519. <b:InvokeCommandAction Command="{Binding VoiceMotorParamChangedCommand}"
  520. CommandParameter="2-2" />
  521. </b:EventTrigger>
  522. </b:Interaction.Triggers>
  523. </local:myNumericUpDowm>
  524. <TextBlock Margin="4,0"
  525. VerticalAlignment="Center"
  526. Text="{lex:Loc 相位}" />
  527. <local:myNumericUpDowm Margin="4,0"
  528. Maximum="359"
  529. Minimum="0"
  530. Interval="1"
  531. StringFormat="{}{0:N0} °"
  532. Value="{Binding Motor2.Phase,Mode=TwoWay}">
  533. <b:Interaction.Triggers>
  534. <b:EventTrigger EventName="ValueChanged">
  535. <b:InvokeCommandAction Command="{Binding VoiceMotorParamChangedCommand}"
  536. CommandParameter="2-3" />
  537. </b:EventTrigger>
  538. </b:Interaction.Triggers>
  539. </local:myNumericUpDowm>
  540. <TextBlock Margin="4,0"
  541. VerticalAlignment="Center"
  542. Text="{lex:Loc 波形}" />
  543. <StackPanel Margin="0,5,0,0"
  544. HorizontalAlignment="Center"
  545. Orientation="Horizontal">
  546. <ToggleButton Width="30"
  547. Height="30"
  548. Margin="2,0"
  549. Content="None"
  550. IsChecked="{Binding Motor2.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=0, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  551. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  552. <b:Interaction.Triggers>
  553. <b:EventTrigger EventName="Click">
  554. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  555. CommandParameter="2-1" />
  556. </b:EventTrigger>
  557. </b:Interaction.Triggers>
  558. </ToggleButton>
  559. <ToggleButton Width="30"
  560. Height="30"
  561. Margin="2,0"
  562. IsChecked="{Binding Motor2.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=1, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  563. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  564. <materialDesign:PackIcon Width="18"
  565. Height="18"
  566. Kind="SineWave" />
  567. <b:Interaction.Triggers>
  568. <b:EventTrigger EventName="Click">
  569. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  570. CommandParameter="2-2" />
  571. </b:EventTrigger>
  572. </b:Interaction.Triggers>
  573. </ToggleButton>
  574. <ToggleButton Width="30"
  575. Height="30"
  576. Margin="2,0"
  577. IsChecked="{Binding Motor2.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=2, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  578. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  579. <materialDesign:PackIcon Width="18"
  580. Height="18"
  581. Kind="SawtoothWave" />
  582. <b:Interaction.Triggers>
  583. <b:EventTrigger EventName="Click">
  584. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  585. CommandParameter="2-3" />
  586. </b:EventTrigger>
  587. </b:Interaction.Triggers>
  588. </ToggleButton>
  589. <ToggleButton Width="30"
  590. Height="30"
  591. Margin="2,0"
  592. IsChecked="{Binding Motor2.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=3, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  593. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  594. <materialDesign:PackIcon Width="18"
  595. Height="18"
  596. Kind="TriangleWave" />
  597. <b:Interaction.Triggers>
  598. <b:EventTrigger EventName="Click">
  599. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  600. CommandParameter="2-4" />
  601. </b:EventTrigger>
  602. </b:Interaction.Triggers>
  603. </ToggleButton>
  604. </StackPanel>
  605. </UniformGrid>
  606. </GroupBox>
  607. <GroupBox Margin="4,4"
  608. Header="Motor4">
  609. <UniformGrid Columns="2">
  610. <TextBlock Margin="4,0"
  611. VerticalAlignment="Center"
  612. Text="{lex:Loc 振幅}" />
  613. <local:myNumericUpDowm x:Name="MotorAmplitudeNumeric4"
  614. Margin="4,0"
  615. Minimum="0"
  616. Maximum="100"
  617. Interval="1"
  618. StringFormat="{}{0:N0} %"
  619. Value="{Binding Motor4.Amplitude,Mode=TwoWay}">
  620. <b:Interaction.Triggers>
  621. <b:EventTrigger EventName="ValueChanged">
  622. <b:InvokeCommandAction Command="{Binding VoiceMotorParamChangedCommand}"
  623. CommandParameter="4-1" />
  624. </b:EventTrigger>
  625. </b:Interaction.Triggers>
  626. </local:myNumericUpDowm>
  627. <TextBlock Margin="4,0"
  628. VerticalAlignment="Center"
  629. Text="{lex:Loc 频率}" />
  630. <local:myNumericUpDowm Margin="4,0"
  631. Minimum="0"
  632. Maximum="250"
  633. Interval="1"
  634. StringFormat="{}{0:N0} Hz"
  635. Value="{Binding Motor4.Frequency,Mode=TwoWay}">
  636. <b:Interaction.Triggers>
  637. <b:EventTrigger EventName="ValueChanged">
  638. <b:InvokeCommandAction Command="{Binding VoiceMotorParamChangedCommand}"
  639. CommandParameter="4-2" />
  640. </b:EventTrigger>
  641. </b:Interaction.Triggers>
  642. </local:myNumericUpDowm>
  643. <TextBlock Margin="4,0"
  644. VerticalAlignment="Center"
  645. Text="{lex:Loc 相位}" />
  646. <local:myNumericUpDowm Margin="4,0"
  647. Maximum="359"
  648. Minimum="0"
  649. Interval="1"
  650. StringFormat="{}{0:N0} °"
  651. Value="{Binding Motor4.Phase,Mode=TwoWay}">
  652. <b:Interaction.Triggers>
  653. <b:EventTrigger EventName="ValueChanged">
  654. <b:InvokeCommandAction Command="{Binding VoiceMotorParamChangedCommand}"
  655. CommandParameter="4-3" />
  656. </b:EventTrigger>
  657. </b:Interaction.Triggers>
  658. </local:myNumericUpDowm>
  659. <TextBlock Margin="4,0"
  660. VerticalAlignment="Center"
  661. Text="{lex:Loc 波形}" />
  662. <StackPanel Margin="0,5,0,0"
  663. HorizontalAlignment="Center"
  664. Orientation="Horizontal">
  665. <ToggleButton Width="30"
  666. Height="30"
  667. Margin="2,0"
  668. Content="None"
  669. IsChecked="{Binding Motor4.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=0, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  670. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  671. <b:Interaction.Triggers>
  672. <b:EventTrigger EventName="Click">
  673. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  674. CommandParameter="4-1" />
  675. </b:EventTrigger>
  676. </b:Interaction.Triggers>
  677. </ToggleButton>
  678. <ToggleButton Width="30"
  679. Height="30"
  680. Margin="2,0"
  681. IsChecked="{Binding Motor4.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=1, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  682. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  683. <materialDesign:PackIcon Width="18"
  684. Height="18"
  685. Kind="SineWave" />
  686. <b:Interaction.Triggers>
  687. <b:EventTrigger EventName="Click">
  688. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  689. CommandParameter="4-2" />
  690. </b:EventTrigger>
  691. </b:Interaction.Triggers>
  692. </ToggleButton>
  693. <ToggleButton Width="30"
  694. Height="30"
  695. Margin="2,0"
  696. IsChecked="{Binding Motor4.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=2, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  697. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  698. <materialDesign:PackIcon Width="18"
  699. Height="18"
  700. Kind="SawtoothWave" />
  701. <b:Interaction.Triggers>
  702. <b:EventTrigger EventName="Click">
  703. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  704. CommandParameter="4-3" />
  705. </b:EventTrigger>
  706. </b:Interaction.Triggers>
  707. </ToggleButton>
  708. <ToggleButton Width="30"
  709. Height="30"
  710. Margin="2,0"
  711. IsChecked="{Binding Motor4.WaveShape, Converter={StaticResource NoneWaveConverter}, ConverterParameter=3, Mode=TwoWay, NotifyOnTargetUpdated=True}"
  712. Style="{DynamicResource MahApps.Styles.ToggleButton.Circle}">
  713. <materialDesign:PackIcon Width="18"
  714. Height="18"
  715. Kind="TriangleWave" />
  716. <b:Interaction.Triggers>
  717. <b:EventTrigger EventName="Click">
  718. <b:InvokeCommandAction Command="{Binding WaveShapeChangedCommand}"
  719. CommandParameter="4-4" />
  720. </b:EventTrigger>
  721. </b:Interaction.Triggers>
  722. </ToggleButton>
  723. </StackPanel>
  724. </UniformGrid>
  725. </GroupBox>
  726. </UniformGrid>
  727. <GroupBox Grid.Row="2"
  728. Margin="4,0"
  729. Header="{lex:Loc 关于}">
  730. <Grid>
  731. <Grid.ColumnDefinitions>
  732. <ColumnDefinition Width="120" />
  733. <ColumnDefinition />
  734. </Grid.ColumnDefinitions>
  735. <mah:ToggleSwitch Width="100"
  736. Margin="4,0"
  737. IsOn="{Binding IsSyncChanging}"
  738. OffContent="{lex:Loc 不同步}"
  739. OnContent="{lex:Loc 同步}" />
  740. <StackPanel Grid.Column="1">
  741. <StackPanel Margin="0,0"
  742. HorizontalAlignment="Center"
  743. Orientation="Horizontal">
  744. <TextBlock Margin="0,0,8,0"
  745. VerticalAlignment="Center"
  746. Text="{lex:Loc 振幅}" />
  747. <Slider x:Name="AmplitudeSlider"
  748. MinWidth="400"
  749. Margin="0,0"
  750. Maximum="100"
  751. Minimum="0"
  752. TickPlacement="BottomRight"
  753. Value="{Binding CurrentAmplitude}">
  754. <b:Interaction.Triggers>
  755. <b:EventTrigger EventName="ValueChanged">
  756. <b:InvokeCommandAction Command="{Binding AmplitudeChangedCommand}" />
  757. </b:EventTrigger>
  758. </b:Interaction.Triggers>
  759. </Slider>
  760. </StackPanel>
  761. <StackPanel Margin="0,0"
  762. HorizontalAlignment="Center"
  763. Orientation="Horizontal">
  764. <TextBlock Margin="0,0,8,0"
  765. VerticalAlignment="Center"
  766. Text="{lex:Loc 频率}" />
  767. <Slider x:Name="FrequencySlider"
  768. MinWidth="400"
  769. Margin="0,0"
  770. FontSize="10"
  771. Maximum="100"
  772. Minimum="0"
  773. SmallChange="1"
  774. TickPlacement="TopLeft"
  775. ToolTip="MaterialDesignDiscreteSlider"
  776. Value="{Binding CurrentFrequency}">
  777. <b:Interaction.Triggers>
  778. <b:EventTrigger EventName="ValueChanged">
  779. <b:InvokeCommandAction Command="{Binding FrequencyChangedCommand}" />
  780. </b:EventTrigger>
  781. </b:Interaction.Triggers>
  782. </Slider>
  783. </StackPanel>
  784. </StackPanel>
  785. </Grid>
  786. </GroupBox>
  787. </Grid>
  788. </Viewbox>
  789. </UserControl>