RandomConfigView.axaml 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784
  1. <UserControl
  2. x:Class="ShakerApp.Views.RandomConfigView"
  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:Shaker.Models"
  9. xmlns:oxy="http://oxyplot.org/avalonia"
  10. xmlns:suki="https://github.com/kikipoulet/SukiUI"
  11. xmlns:view="using:ShakerApp.Views"
  12. xmlns:vm="using:ShakerApp.ViewModels"
  13. d:DesignHeight="450"
  14. d:DesignWidth="800"
  15. x:DataType="vm:RandomConfigViewModel"
  16. DataContext="{Binding Source={x:Static vm:RandomConfigViewModel.Instance}}"
  17. mc:Ignorable="d">
  18. <Grid RowDefinitions="1.2*,*">
  19. <Grid ColumnDefinitions="*,*,*">
  20. <oxy:PlotView Background="Transparent" Model="{Binding AccelerationModel}">l
  21. </oxy:PlotView>
  22. <Button
  23. Margin="0,0,16,56"
  24. HorizontalAlignment="Right"
  25. VerticalAlignment="Bottom"
  26. Classes="Basic"
  27. Cursor="Hand">
  28. <Interaction.Behaviors>
  29. <EventTriggerBehavior EventName="Click">
  30. <InvokeCommandAction Command="{Binding Source={x:Static vm:PlotConfigViewModel.Instance}, Path=PlotConfigCommand}" CommandParameter="{Binding DisplacementModel}" />
  31. </EventTriggerBehavior>
  32. </Interaction.Behaviors>
  33. <PathIcon Background="Transparent" Data="{StaticResource SettingGeometry}">
  34. <PathIcon.Styles>
  35. <Style Selector="PathIcon:pointerover">
  36. <Setter Property="Foreground" Value="Black" />
  37. </Style>
  38. <Style Selector="PathIcon">
  39. <Setter Property="Foreground" Value="#AAAAAAAA" />
  40. </Style>
  41. </PathIcon.Styles>
  42. </PathIcon>
  43. </Button>
  44. <oxy:PlotView
  45. Grid.Column="1"
  46. Background="Transparent"
  47. Model="{Binding VelocityModel}">
  48. <oxy:PlotView.DefaultTrackerTemplate>
  49. <ControlTemplate>
  50. <oxy:TrackerControl
  51. Background="#6F999999"
  52. BorderBrush="Transparent"
  53. CornerRadius="6"
  54. HorizontalLineVisibility="False"
  55. LineExtents="{Binding PlotModel.PlotArea}"
  56. LineStroke="Gray"
  57. Position="{Binding Position}"
  58. ShowPointer="True"
  59. VerticalLineVisibility="True">
  60. <oxy:TrackerControl.Content>
  61. <StackPanel Margin="10">
  62. <TextBlock Text="{DynamicResource Value}" />
  63. <TextBlock>
  64. <Run Text="{Binding XAxis.Title}" />
  65. <Run Text=":" />
  66. <Run Text="{Binding TrackerDatas[0].DataPoint.X, StringFormat='{}{0:F2}'}" />
  67. <Run Text="{Binding XAxis.Unit}" />
  68. </TextBlock>
  69. <ItemsControl ItemsSource="{Binding TrackerDatas}">
  70. <ItemsControl.ItemTemplate>
  71. <DataTemplate>
  72. <TextBlock IsVisible="{Binding Series.IsVisible}">
  73. <Run Text="{Binding Series.Title}" />
  74. <Run Text=":" />
  75. <Run Text="{Binding DataPoint.Y, StringFormat='{}{0:F4}'}" />
  76. <Run Text="{Binding $parent[ItemsControl].DataContext.YAxis.Unit}" />
  77. </TextBlock>
  78. </DataTemplate>
  79. </ItemsControl.ItemTemplate>
  80. </ItemsControl>
  81. </StackPanel>
  82. </oxy:TrackerControl.Content>
  83. </oxy:TrackerControl>
  84. </ControlTemplate>
  85. </oxy:PlotView.DefaultTrackerTemplate>
  86. </oxy:PlotView>
  87. <Button
  88. Grid.Column="1"
  89. Margin="0,0,16,56"
  90. HorizontalAlignment="Right"
  91. VerticalAlignment="Bottom"
  92. Classes="Basic"
  93. Cursor="Hand">
  94. <Interaction.Behaviors>
  95. <EventTriggerBehavior EventName="Click">
  96. <InvokeCommandAction Command="{Binding Source={x:Static vm:PlotConfigViewModel.Instance}, Path=PlotConfigCommand}" CommandParameter="{Binding VelocityModel}" />
  97. </EventTriggerBehavior>
  98. </Interaction.Behaviors>
  99. <PathIcon Background="Transparent" Data="{StaticResource SettingGeometry}">
  100. <PathIcon.Styles>
  101. <Style Selector="PathIcon:pointerover">
  102. <Setter Property="Foreground" Value="Black" />
  103. </Style>
  104. <Style Selector="PathIcon">
  105. <Setter Property="Foreground" Value="#AAAAAAAA" />
  106. </Style>
  107. </PathIcon.Styles>
  108. </PathIcon>
  109. </Button>
  110. <oxy:PlotView
  111. Grid.Column="2"
  112. Background="Transparent"
  113. Model="{Binding DisplacementModel}">
  114. <oxy:PlotView.DefaultTrackerTemplate>
  115. <ControlTemplate>
  116. <oxy:TrackerControl
  117. Background="#6F999999"
  118. BorderBrush="Transparent"
  119. CornerRadius="6"
  120. HorizontalLineVisibility="False"
  121. LineExtents="{Binding PlotModel.PlotArea}"
  122. LineStroke="Gray"
  123. Position="{Binding Position}"
  124. ShowPointer="True"
  125. VerticalLineVisibility="True">
  126. <oxy:TrackerControl.Content>
  127. <StackPanel Margin="10">
  128. <TextBlock Text="{DynamicResource Value}" />
  129. <TextBlock>
  130. <Run Text="{Binding XAxis.Title}" />
  131. <Run Text=":" />
  132. <Run Text="{Binding TrackerDatas[0].DataPoint.X, StringFormat='{}{0:F2}'}" />
  133. <Run Text="{Binding XAxis.Unit}" />
  134. </TextBlock>
  135. <ItemsControl ItemsSource="{Binding TrackerDatas}">
  136. <ItemsControl.ItemTemplate>
  137. <DataTemplate>
  138. <TextBlock IsVisible="{Binding Series.IsVisible}">
  139. <Run Text="{Binding Series.Title}" />
  140. <Run Text=":" />
  141. <Run Text="{Binding DataPoint.Y, StringFormat='{}{0:F4}'}" />
  142. <Run Text="{Binding $parent[ItemsControl].DataContext.YAxis.Unit}" />
  143. </TextBlock>
  144. </DataTemplate>
  145. </ItemsControl.ItemTemplate>
  146. </ItemsControl>
  147. </StackPanel>
  148. </oxy:TrackerControl.Content>
  149. </oxy:TrackerControl>
  150. </ControlTemplate>
  151. </oxy:PlotView.DefaultTrackerTemplate>
  152. </oxy:PlotView>
  153. <Button
  154. Grid.Column="2"
  155. Margin="0,0,16,56"
  156. HorizontalAlignment="Right"
  157. VerticalAlignment="Bottom"
  158. Classes="Basic"
  159. Cursor="Hand">
  160. <Interaction.Behaviors>
  161. <EventTriggerBehavior EventName="Click">
  162. <InvokeCommandAction Command="{Binding Source={x:Static vm:PlotConfigViewModel.Instance}, Path=PlotConfigCommand}" CommandParameter="{Binding DisplacementModel}" />
  163. </EventTriggerBehavior>
  164. </Interaction.Behaviors>
  165. <PathIcon Background="Transparent" Data="{StaticResource SettingGeometry}">
  166. <PathIcon.Styles>
  167. <Style Selector="PathIcon:pointerover">
  168. <Setter Property="Foreground" Value="Black" />
  169. </Style>
  170. <Style Selector="PathIcon">
  171. <Setter Property="Foreground" Value="#AAAAAAAA" />
  172. </Style>
  173. </PathIcon.Styles>
  174. </PathIcon>
  175. </Button>
  176. </Grid>
  177. <TabControl Grid.Row="1">
  178. <TabItem Header="{DynamicResource SpectrumItems}">
  179. <Grid
  180. Width="860"
  181. Margin="4,0,0,0"
  182. HorizontalAlignment="Left">
  183. <Grid.RowDefinitions>
  184. <RowDefinition Height="auto" />
  185. <RowDefinition Height="*" />
  186. <RowDefinition Height="auto" />
  187. </Grid.RowDefinitions>
  188. <UniformGrid
  189. Grid.Row="0"
  190. Width="860"
  191. HorizontalAlignment="Left"
  192. VerticalAlignment="Center"
  193. Rows="1">
  194. <StackPanel>
  195. <TextBlock Text="{DynamicResource UpFrequency}" />
  196. <ComboBox
  197. Width="120"
  198. HorizontalAlignment="Left"
  199. VerticalAlignment="Center"
  200. DisplayMemberBinding="{Binding Key}"
  201. ItemsSource="{Binding MaxFrequency, Converter={StaticResource EnumToCollectionConverter}, Mode=OneTime}"
  202. SelectedValue="{Binding Path=MaxFrequency}"
  203. SelectedValueBinding="{Binding Value}" />
  204. </StackPanel>
  205. <StackPanel>
  206. <TextBlock Text="{DynamicResource DownFrequency}" />
  207. <NumericUpDown
  208. Width="120"
  209. Margin="0,4,0,0"
  210. HorizontalAlignment="Left"
  211. VerticalAlignment="Center"
  212. Minimum="1"
  213. Value="{Binding MinFrequency}" />
  214. </StackPanel>
  215. <StackPanel>
  216. <TextBlock Text="{DynamicResource SpectrumLines}" />
  217. <ComboBox
  218. Width="120"
  219. HorizontalAlignment="Left"
  220. VerticalAlignment="Center"
  221. DisplayMemberBinding="{Binding Key}"
  222. ItemsSource="{Binding SpectrumLines, Converter={StaticResource EnumToCollectionConverter}, Mode=OneTime}"
  223. SelectedValue="{Binding Path=SpectrumLines}"
  224. SelectedValueBinding="{Binding Value}" />
  225. </StackPanel>
  226. <StackPanel>
  227. <TextBlock Text="Sigma" />
  228. <NumericUpDown
  229. Width="120"
  230. Margin="0,4,0,0"
  231. HorizontalAlignment="Left"
  232. VerticalAlignment="Center"
  233. Minimum="1"
  234. Value="{Binding Sigma}" />
  235. </StackPanel>
  236. </UniformGrid>
  237. <Grid Grid.Row="1" ColumnDefinitions="auto,*">
  238. <StackPanel
  239. Grid.Column="1"
  240. Margin="12,0,0,0"
  241. IsEnabled="{Binding CanResetRMS}"
  242. Orientation="Horizontal">
  243. <StackPanel>
  244. <TextBlock>
  245. <Run Text="{DynamicResource RMSValue}" />
  246. <Run Text="(g)" />
  247. </TextBlock>
  248. <NumericUpDown Width="120" Value="{Binding ResetRMS}" />
  249. </StackPanel>
  250. <Button
  251. Height="36"
  252. Margin="10,20,0,0"
  253. VerticalAlignment="Top"
  254. Command="{Binding ResetRMSCommand}"
  255. Content="{DynamicResource ResetRMS}" />
  256. </StackPanel>
  257. <StackPanel Grid.Column="0" Width="860">
  258. <Grid
  259. Height="{StaticResource ItemHeight}"
  260. Background="LightGray"
  261. ColumnDefinitions="40,0.8*,0.8*,1.5*,0.8*,0.8*,0.8*,0.8*">
  262. <TextBlock
  263. HorizontalAlignment="Center"
  264. VerticalAlignment="Center"
  265. Text="{DynamicResource ServoValveIndex}" />
  266. <TextBlock
  267. Grid.Column="1"
  268. HorizontalAlignment="Center"
  269. VerticalAlignment="Center">
  270. <Run Text="{DynamicResource Frequency}" />
  271. <Run Text="(Hz)" />
  272. </TextBlock>
  273. <TextBlock
  274. Grid.Column="2"
  275. HorizontalAlignment="Center"
  276. VerticalAlignment="Center"
  277. Text="{DynamicResource SweepValueType}" />
  278. <TextBlock
  279. Grid.Column="3"
  280. HorizontalAlignment="Center"
  281. VerticalAlignment="Center"
  282. Text="{DynamicResource Value}" />
  283. <TextBlock
  284. Grid.Column="4"
  285. HorizontalAlignment="Center"
  286. VerticalAlignment="Center">
  287. <Run Text="{DynamicResource UpStopAcceleration}" />
  288. <Run Text="(dB)" />
  289. </TextBlock>
  290. <TextBlock
  291. Grid.Column="5"
  292. HorizontalAlignment="Center"
  293. VerticalAlignment="Center">
  294. <Run Text="{DynamicResource UpWarnAcceleration}" />
  295. <Run Text="(dB)" />
  296. </TextBlock>
  297. <TextBlock
  298. Grid.Column="6"
  299. HorizontalAlignment="Center"
  300. VerticalAlignment="Center">
  301. <Run Text="{DynamicResource DownStopAcceleration}" />
  302. <Run Text="(dB)" />
  303. </TextBlock>
  304. <TextBlock
  305. Grid.Column="7"
  306. HorizontalAlignment="Center"
  307. VerticalAlignment="Center">
  308. <Run Text="{DynamicResource DownWarnAcceleration}" />
  309. <Run Text="(dB)" />
  310. </TextBlock>
  311. </Grid>
  312. <ScrollViewer Height="{Binding $parent[StackPanel].Bounds.Height, Converter={StaticResource SubtractionConverter}, ConverterParameter={StaticResource ItemHeight}}">
  313. <ItemsControl ItemsSource="{Binding SpectrumItems}">
  314. <ItemsControl.ItemTemplate>
  315. <DataTemplate>
  316. <Grid
  317. Height="{StaticResource ItemHeight}"
  318. Margin="0,4,0,4"
  319. ColumnDefinitions="40,0.8*,0.8*,1.5*,0.8*,0.8*,0.8*,0.8*">
  320. <TextBlock
  321. HorizontalAlignment="Center"
  322. VerticalAlignment="Center"
  323. Text="{Binding Index}" />
  324. <NumericUpDown Grid.Column="1" Value="{Binding Value.Frequency}" />
  325. <ComboBox
  326. Grid.Column="2"
  327. ItemsSource="{Binding Value.ValueType, Converter={StaticResource EnumToCollectionConverter}, Mode=OneTime}"
  328. SelectedValue="{Binding Path=Value.ValueType}"
  329. SelectedValueBinding="{Binding Value}">
  330. <ComboBox.ItemTemplate>
  331. <DataTemplate>
  332. <TextBlock Text="{local:ResourceBinding Key}" />
  333. </DataTemplate>
  334. </ComboBox.ItemTemplate>
  335. </ComboBox>
  336. <StackPanel Grid.Column="3" Orientation="Horizontal">
  337. <NumericUpDown Width="140" Value="{Binding Value.Value}" />
  338. <TextBlock
  339. Margin="4,0,0,0"
  340. HorizontalAlignment="Center"
  341. VerticalAlignment="Center"
  342. Classes.Slope="{Binding Value.ValueType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model:RandomValueType.Slope}}">
  343. <TextBlock.Styles>
  344. <Style Selector="TextBlock">
  345. <Setter Property="IsVisible" Value="True" />
  346. <Setter Property="Text" Value="g&#0178;/Hz" />
  347. </Style>
  348. <Style Selector="TextBlock.Slope">
  349. <Setter Property="IsVisible" Value="False" />
  350. <Setter Property="Text" Value="" />
  351. </Style>
  352. </TextBlock.Styles>
  353. </TextBlock>
  354. </StackPanel>
  355. <NumericUpDown
  356. Grid.Column="4"
  357. Margin="4,0,4,0"
  358. Value="{Binding Value.UpStop}" />
  359. <NumericUpDown
  360. Grid.Column="5"
  361. Margin="4,0,4,0"
  362. Value="{Binding Value.UpWarn}" />
  363. <NumericUpDown
  364. Grid.Column="6"
  365. Margin="4,0,4,0"
  366. Value="{Binding Value.DownStop}" />
  367. <NumericUpDown
  368. Grid.Column="7"
  369. Margin="4,0,4,0"
  370. Value="{Binding Value.DownWarn}" />
  371. </Grid>
  372. </DataTemplate>
  373. </ItemsControl.ItemTemplate>
  374. </ItemsControl>
  375. </ScrollViewer>
  376. </StackPanel>
  377. </Grid>
  378. <StackPanel
  379. Grid.Row="2"
  380. HorizontalAlignment="Center"
  381. VerticalAlignment="Center"
  382. Orientation="Horizontal">
  383. <Button Command="{Binding AddCommand}" Content="{DynamicResource AddItem}" />
  384. <Button
  385. Margin="120,0,0,0"
  386. Command="{Binding DeleteCommand}"
  387. Content="{DynamicResource DelLastItem}" />
  388. <Button
  389. Margin="120,0,0,0"
  390. Command="{Binding RefreshCommand}"
  391. Content="{DynamicResource RefreshItem}" />
  392. </StackPanel>
  393. </Grid>
  394. </TabItem>
  395. <TabItem Header="{DynamicResource Channel}" IsVisible="{Binding Source={x:Static vm:ShakerConfigViewModel.Instance}, Path=AccelerationSensorCount, Converter={StaticResource GreaterThanEqualConverter}, ConverterParameter='2'}">
  396. <StackPanel Margin="10,0,0,0">
  397. <StackPanel Orientation="Horizontal">
  398. <TextBlock VerticalAlignment="Center" Text="{DynamicResource SynthesisType}" />
  399. <ComboBox
  400. ItemsSource="{Binding Source={x:Static vm:ShakerConfigViewModel.Instance}, Path=SynthesisType, Converter={StaticResource EnumToCollectionConverter}, Mode=OneTime}"
  401. SelectedValue="{Binding Source={x:Static vm:ShakerConfigViewModel.Instance}, Path=SynthesisType}"
  402. SelectedValueBinding="{Binding Path=Value}">
  403. <ComboBox.ItemTemplate>
  404. <DataTemplate>
  405. <TextBlock Text="{local:ResourceBinding Key}" />
  406. </DataTemplate>
  407. </ComboBox.ItemTemplate>
  408. </ComboBox>
  409. </StackPanel>
  410. <suki:GlassCard IsEnabled="{Binding Source={x:Static vm:ShakerConfigViewModel.Instance}, Path=SynthesisType, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static model:AccelerationSynthesisType.Synthesis}}">
  411. <suki:GroupBox Header="{DynamicResource Weight}">
  412. <ItemsControl ItemsSource="{Binding Source={x:Static vm:ShakerConfigViewModel.Instance}, Path=Accelerations}">
  413. <ItemsControl.ItemTemplate>
  414. <DataTemplate>
  415. <Grid RowDefinitions="auto,auto,auto">
  416. <TextBlock
  417. Height="{StaticResource ItemHeight}"
  418. HorizontalAlignment="Center"
  419. VerticalAlignment="Center">
  420. <Run Text="{DynamicResource Acceleration}" />
  421. <Run Text="{Binding Index}" />
  422. </TextBlock>
  423. <NumericUpDown
  424. Grid.Row="1"
  425. Height="{StaticResource ItemHeight}"
  426. Margin="10,0,0,0"
  427. VerticalContentAlignment="Center"
  428. Maximum="1"
  429. Minimum="0"
  430. Value="{Binding Value.Weight}" />
  431. <TextBlock
  432. Grid.Row="2"
  433. Height="{StaticResource ItemHeight}"
  434. HorizontalAlignment="Center"
  435. VerticalAlignment="Center">
  436. <Run Text="{DynamicResource Sensitivity}" />
  437. <Run Text="{Binding Value.Sensitivity}" />
  438. <Run Text="mV/g" />
  439. </TextBlock>
  440. </Grid>
  441. </DataTemplate>
  442. </ItemsControl.ItemTemplate>
  443. <ItemsControl.ItemsPanel>
  444. <ItemsPanelTemplate>
  445. <StackPanel Orientation="Horizontal" />
  446. </ItemsPanelTemplate>
  447. </ItemsControl.ItemsPanel>
  448. </ItemsControl>
  449. </suki:GroupBox>
  450. </suki:GlassCard>
  451. </StackPanel>
  452. </TabItem>
  453. <TabItem Header="{DynamicResource SweepLimit}">
  454. <StackPanel
  455. Width="660"
  456. HorizontalAlignment="Left"
  457. VerticalAlignment="Top">
  458. <Grid
  459. Height="{StaticResource ItemHeight}"
  460. Background="LightGray"
  461. ColumnDefinitions="*,*,*,*">
  462. <TextBlock
  463. HorizontalAlignment="Center"
  464. VerticalAlignment="Center"
  465. Text="{DynamicResource Item}" />
  466. <TextBlock
  467. Grid.Column="1"
  468. HorizontalAlignment="Center"
  469. VerticalAlignment="Center"
  470. Text="{DynamicResource Ampt}" />
  471. <TextBlock
  472. Grid.Column="2"
  473. HorizontalAlignment="Center"
  474. VerticalAlignment="Center"
  475. Text="{DynamicResource SweepLimit}" />
  476. <TextBlock
  477. Grid.Column="3"
  478. HorizontalAlignment="Center"
  479. VerticalAlignment="Center">
  480. <Run Text="{DynamicResource Load}" />
  481. <Run Text="(%)" />
  482. </TextBlock>
  483. </Grid>
  484. <Grid RowDefinitions="auto,auto,auto,auto">
  485. <Grid Height="{StaticResource ItemHeight}" ColumnDefinitions="*,*,*,*">
  486. <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
  487. <Run Text="{DynamicResource Acceleration}" />
  488. <Run Text="(g)" />
  489. </TextBlock>
  490. <TextBlock
  491. Grid.Column="1"
  492. HorizontalAlignment="Center"
  493. VerticalAlignment="Center"
  494. Text="{Binding MaxAcceleration}" />
  495. <TextBlock
  496. Grid.Column="2"
  497. HorizontalAlignment="Center"
  498. VerticalAlignment="Center"
  499. Text="{Binding Source={x:Static vm:ShakerConfigViewModel.Instance}, Path=MaxAcceleration}" />
  500. <TextBlock
  501. Grid.Column="3"
  502. HorizontalAlignment="Center"
  503. VerticalAlignment="Center"
  504. Classes.Loaded="{Binding AccelerationOverLimit}"
  505. Text="{Binding AccelerationLoad}">
  506. <TextBlock.Styles>
  507. <Style Selector="TextBlock">
  508. <Setter Property="Foreground" Value="Green" />
  509. </Style>
  510. <Style Selector="TextBlock.Loaded">
  511. <Setter Property="Foreground" Value="Red" />
  512. </Style>
  513. </TextBlock.Styles>
  514. </TextBlock>
  515. </Grid>
  516. <Grid
  517. Grid.Row="1"
  518. Height="{StaticResource ItemHeight}"
  519. ColumnDefinitions="*,*,*,*">
  520. <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
  521. <Run Text="{DynamicResource Velocity}" />
  522. <Run Text="(m/s)" />
  523. </TextBlock>
  524. <TextBlock
  525. Grid.Column="1"
  526. HorizontalAlignment="Center"
  527. VerticalAlignment="Center"
  528. Text="{Binding MaxVelocity}" />
  529. <TextBlock
  530. Grid.Column="2"
  531. HorizontalAlignment="Center"
  532. VerticalAlignment="Center"
  533. Text="{Binding Source={x:Static vm:ShakerConfigViewModel.Instance}, Path=MaxVelocity}" />
  534. <TextBlock
  535. Grid.Column="3"
  536. HorizontalAlignment="Center"
  537. VerticalAlignment="Center"
  538. Classes.Loaded="{Binding VelocityOverLimit}"
  539. Text="{Binding VelocityLoad}">
  540. <TextBlock.Styles>
  541. <Style Selector="TextBlock">
  542. <Setter Property="Foreground" Value="Green" />
  543. </Style>
  544. <Style Selector="TextBlock.Loaded">
  545. <Setter Property="Foreground" Value="Red" />
  546. </Style>
  547. </TextBlock.Styles>
  548. </TextBlock>
  549. </Grid>
  550. <Grid
  551. Grid.Row="2"
  552. Height="{StaticResource ItemHeight}"
  553. ColumnDefinitions="*,*,*,*">
  554. <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
  555. <Run Text="{DynamicResource Displacement}" />
  556. <Run Text="(mm)" />
  557. </TextBlock>
  558. <TextBlock
  559. Grid.Column="1"
  560. HorizontalAlignment="Center"
  561. VerticalAlignment="Center"
  562. Text="{Binding MaxDisplacement}" />
  563. <TextBlock
  564. Grid.Column="2"
  565. HorizontalAlignment="Center"
  566. VerticalAlignment="Center"
  567. Text="{Binding Source={x:Static vm:ShakerConfigViewModel.Instance}, Path=MaxDisplacement}" />
  568. <TextBlock
  569. Grid.Column="3"
  570. HorizontalAlignment="Center"
  571. VerticalAlignment="Center"
  572. Classes.Loaded="{Binding DisplacementOverLimit}"
  573. Text="{Binding DisplacementLoad}">
  574. <TextBlock.Styles>
  575. <Style Selector="TextBlock">
  576. <Setter Property="Foreground" Value="Green" />
  577. </Style>
  578. <Style Selector="TextBlock.Loaded">
  579. <Setter Property="Foreground" Value="Red" />
  580. </Style>
  581. </TextBlock.Styles>
  582. </TextBlock>
  583. </Grid>
  584. </Grid>
  585. </StackPanel>
  586. </TabItem>
  587. <TabItem Header="{DynamicResource IdentifyConfig}">
  588. <UniformGrid VerticalAlignment="Top" Columns="4">
  589. <StackPanel Margin="10,4,0,0">
  590. <TextBlock VerticalAlignment="Center">
  591. <Run Text="{DynamicResource StartDisplacement}" />
  592. <Run Text="(mm)" />
  593. </TextBlock>
  594. <NumericUpDown
  595. Height="{StaticResource ItemHeight}"
  596. VerticalAlignment="Center"
  597. Maximum="{Binding Source={x:Static vm:ShakerConfigViewModel.Instance}, Path=MaxDisplacement, Converter={StaticResource MultiConverter}, ConverterParameter='0.5'}"
  598. Minimum="0.001"
  599. Value="{Binding Identify.StartDisplacement}" />
  600. </StackPanel>
  601. <StackPanel Margin="10,4,0,0">
  602. <TextBlock VerticalAlignment="Center">
  603. <Run Text="{DynamicResource UpLevel}" />
  604. <Run Text="(%)" />
  605. </TextBlock>
  606. <NumericUpDown
  607. Height="{StaticResource ItemHeight}"
  608. VerticalAlignment="Center"
  609. Increment="0.1"
  610. Maximum="100"
  611. Minimum="1"
  612. Value="{Binding Identify.UpLevel}" />
  613. </StackPanel>
  614. <StackPanel Margin="10,4,0,0">
  615. <TextBlock VerticalAlignment="Center">
  616. <Run Text="{DynamicResource EndLevel}" />
  617. <Run Text="(dB)" />
  618. </TextBlock>
  619. <NumericUpDown
  620. Height="{StaticResource ItemHeight}"
  621. VerticalAlignment="Center"
  622. Increment="0.1"
  623. Maximum="20"
  624. Minimum="-20"
  625. Value="{Binding Identify.EndLevel}" />
  626. </StackPanel>
  627. <StackPanel Margin="10,4,0,0">
  628. <TextBlock VerticalAlignment="Center">
  629. <Run Text="{DynamicResource MaxIdentifyDisplacement}" />
  630. <Run Text="(mm)" />
  631. </TextBlock>
  632. <NumericUpDown
  633. Height="{StaticResource ItemHeight}"
  634. VerticalAlignment="Center"
  635. Increment="0.1"
  636. Maximum="{Binding Source={x:Static vm:ShakerConfigViewModel.Instance}, Path=MaxDisplacement}"
  637. Minimum="{Binding Identify.StartDisplacement}"
  638. Value="{Binding Identify.MaxDisplacement}" />
  639. </StackPanel>
  640. <StackPanel Margin="10,4,0,0">
  641. <TextBlock VerticalAlignment="Center">
  642. <Run Text="{DynamicResource IdentifyFrameCount}" />
  643. </TextBlock>
  644. <NumericUpDown
  645. Height="{StaticResource ItemHeight}"
  646. VerticalAlignment="Center"
  647. Increment="1"
  648. Maximum="20"
  649. Minimum="8"
  650. Value="{Binding Identify.IdentifyFrameCount}" />
  651. </StackPanel>
  652. </UniformGrid>
  653. </TabItem>
  654. <TabItem Header="{DynamicResource SweepSchedule}">
  655. <Grid
  656. Width="500"
  657. Margin="4,0,0,0"
  658. HorizontalAlignment="Left">
  659. <Grid.RowDefinitions>
  660. <RowDefinition Height="auto" />
  661. <RowDefinition Height="*" />
  662. <RowDefinition Height="auto" />
  663. </Grid.RowDefinitions>
  664. <UniformGrid
  665. Grid.Row="0"
  666. Width="500"
  667. HorizontalAlignment="Left"
  668. VerticalAlignment="Center"
  669. Rows="1">
  670. <StackPanel>
  671. <TextBlock Text="{DynamicResource StopLins}" />
  672. <NumericUpDown
  673. Width="120"
  674. Margin="0,4,0,0"
  675. HorizontalAlignment="Left"
  676. VerticalAlignment="Center"
  677. Minimum="1"
  678. Value="{Binding StopLins}" />
  679. </StackPanel>
  680. <StackPanel>
  681. <TextBlock Text="{DynamicResource WarnLines}" />
  682. <NumericUpDown
  683. Width="120"
  684. Margin="0,4,0,0"
  685. HorizontalAlignment="Left"
  686. VerticalAlignment="Center"
  687. Minimum="1"
  688. Value="{Binding WarnLines}" />
  689. </StackPanel>
  690. <StackPanel>
  691. <TextBlock>
  692. <Run Text="{DynamicResource StopRMS}" />
  693. <Run Text="(dB)" />
  694. </TextBlock>
  695. <NumericUpDown
  696. Width="120"
  697. Margin="0,4,0,0"
  698. HorizontalAlignment="Left"
  699. VerticalAlignment="Center"
  700. Minimum="1"
  701. Value="{Binding StopRMS}" />
  702. </StackPanel>
  703. </UniformGrid>
  704. <StackPanel Grid.Row="1">
  705. <Grid
  706. Height="{StaticResource ItemHeight}"
  707. Margin="0,4,0,4"
  708. Background="LightGray"
  709. ColumnDefinitions="40,120,*">
  710. <TextBlock
  711. HorizontalAlignment="Center"
  712. VerticalAlignment="Center"
  713. Text="{DynamicResource ServoValveIndex}" />
  714. <TextBlock
  715. Grid.Column="1"
  716. HorizontalAlignment="Center"
  717. VerticalAlignment="Center">
  718. <Run Text="{DynamicResource RandomLevel}" />
  719. <Run Text="(dB)" />
  720. </TextBlock>
  721. <TextBlock
  722. Grid.Column="2"
  723. HorizontalAlignment="Center"
  724. VerticalAlignment="Center"
  725. Text="{DynamicResource Time}" />
  726. </Grid>
  727. <ScrollViewer Height="{Binding $parent[StackPanel].Bounds.Height, Converter={StaticResource SubtractionConverter}, ConverterParameter={StaticResource ItemHeight}}">
  728. <ItemsControl ItemsSource="{Binding PlanItems}">
  729. <ItemsControl.ItemTemplate>
  730. <DataTemplate>
  731. <Grid
  732. Height="{StaticResource ItemHeight}"
  733. Margin="0,4,0,4"
  734. ColumnDefinitions="40,120,*">
  735. <TextBlock
  736. HorizontalAlignment="Center"
  737. VerticalAlignment="Center"
  738. Text="{Binding Index}" />
  739. <NumericUpDown Grid.Column="1" Value="{Binding Value.Level}" />
  740. <view:TimeControl
  741. Grid.Column="2"
  742. Margin="10,0,10,0"
  743. Time="{Binding Value.Time}" />
  744. </Grid>
  745. </DataTemplate>
  746. </ItemsControl.ItemTemplate>
  747. </ItemsControl>
  748. </ScrollViewer>
  749. </StackPanel>
  750. <StackPanel
  751. Grid.Row="2"
  752. HorizontalAlignment="Center"
  753. VerticalAlignment="Center"
  754. Orientation="Horizontal">
  755. <Button Command="{Binding AddPlanCommand}" Content="{DynamicResource AddItem}" />
  756. <Button
  757. Margin="120,0,0,0"
  758. Command="{Binding DeletePlanCommand}"
  759. Content="{DynamicResource DelLastItem}" />
  760. <Button
  761. Margin="120,0,0,0"
  762. Command="{Binding RefreshPlanCommand}"
  763. Content="{DynamicResource RefreshItem}" />
  764. </StackPanel>
  765. </Grid>
  766. </TabItem>
  767. </TabControl>
  768. </Grid>
  769. </UserControl>