RandomConfigView.axaml 46 KB

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