AnalogSignalPreviewView.axaml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. <UserControl
  2. x:Class="ShakerApp.Views.AnalogSignalPreviewView"
  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:oxy="http://oxyplot.org/avalonia"
  9. xmlns:suki="https://github.com/kikipoulet/SukiUI"
  10. xmlns:vm="using:ShakerApp.ViewModels"
  11. d:DesignHeight="450"
  12. d:DesignWidth="800"
  13. x:DataType="vm:AnalogSignalPreviewViewModel"
  14. mc:Ignorable="d">
  15. <Grid>
  16. <oxy:PlotView
  17. Background="Transparent"
  18. Controller="{Binding PlotController}"
  19. DefaultTrackerTemplate="{StaticResource DefaultTrackerTemplate}"
  20. Model="{Binding PlotModel}" />
  21. <Button
  22. Margin="0,0,16,56"
  23. HorizontalAlignment="Right"
  24. VerticalAlignment="Bottom"
  25. Classes="Basic"
  26. Cursor="Hand">
  27. <Interaction.Behaviors>
  28. <EventTriggerBehavior EventName="Click">
  29. <InvokeCommandAction Command="{Binding Source={x:Static vm:PlotConfigViewModel.Instance}, Path=PlotConfigCommand}" CommandParameter="{Binding PlotModel}" />
  30. </EventTriggerBehavior>
  31. </Interaction.Behaviors>
  32. <PathIcon Background="Transparent" Data="{StaticResource SettingGeometry}">
  33. <PathIcon.Styles>
  34. <Style Selector="PathIcon:pointerover">
  35. <Setter Property="Foreground" Value="Black" />
  36. </Style>
  37. <Style Selector="PathIcon">
  38. <Setter Property="Foreground" Value="#AAAAAAAA" />
  39. </Style>
  40. </PathIcon.Styles>
  41. </PathIcon>
  42. </Button>
  43. <StackPanel
  44. HorizontalAlignment="Right"
  45. VerticalAlignment="Top"
  46. Orientation="Horizontal">
  47. <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
  48. <TextBlock VerticalAlignment="Center" Text="{DynamicResource Statistics}" />
  49. <ToggleSwitch IsChecked="{Binding StatisticsVisibily, Mode=TwoWay}" />
  50. </StackPanel>
  51. <StackPanel
  52. Margin="10,0,0,0"
  53. IsVisible="{Binding THDVisibily}"
  54. Orientation="Horizontal">
  55. <TextBlock VerticalAlignment="Center" Text="THD" />
  56. <ToggleSwitch IsChecked="{Binding THDEnabled, Mode=TwoWay}" />
  57. </StackPanel>
  58. <Button
  59. HorizontalAlignment="Right"
  60. VerticalAlignment="Top"
  61. Classes="Basic"
  62. IsVisible="{Binding CanChangedAnalog}">
  63. <PathIcon Data="{StaticResource SettingGeometry}" />
  64. <Button.Flyout>
  65. <Flyout ShowMode="Standard">
  66. <suki:GlassCard
  67. Background="Black"
  68. CornerRadius="10"
  69. Opacity="1"
  70. OpacityMask="Black">
  71. <suki:GroupBox>
  72. <suki:GroupBox.Header>
  73. <TextBlock Foreground="White" Text="{DynamicResource SelectSignalType}" />
  74. </suki:GroupBox.Header>
  75. <ItemsControl ItemsSource="{Binding Menu}">
  76. <ItemsControl.ItemTemplate>
  77. <DataTemplate>
  78. <Grid
  79. Name="item"
  80. Height="{StaticResource ItemHeight}"
  81. x:DataType="vm:TimeDomainMenuViewModel"
  82. Background="Transparent"
  83. Cursor="Hand">
  84. <Interaction.Behaviors>
  85. <EventTriggerBehavior EventName="PointerReleased">
  86. <ChangePropertyAction
  87. PropertyName="SelectedAnalog"
  88. TargetObject="{Binding $parent[Button].DataContext}"
  89. Value="{Binding #item.DataContext.AnalogType}" />
  90. </EventTriggerBehavior>
  91. </Interaction.Behaviors>
  92. <Grid.Styles>
  93. <Style Selector="Grid:pointerover">
  94. <Setter Property="Background" Value="LightGray" />
  95. </Style>
  96. </Grid.Styles>
  97. <Grid.ColumnDefinitions>
  98. <ColumnDefinition Width="30" />
  99. <ColumnDefinition Width="*" />
  100. </Grid.ColumnDefinitions>
  101. <PathIcon
  102. Data="{x:Static suki:Icons.Check}"
  103. Foreground="White"
  104. IsVisible="{Binding IsChecked}" />
  105. <Line
  106. HorizontalAlignment="Right"
  107. VerticalAlignment="Center"
  108. Stroke="LightGray"
  109. StrokeThickness="2"
  110. StartPoint="0,4"
  111. EndPoint="0,24" />
  112. <TextBlock
  113. Grid.Column="1"
  114. Margin="10,0,0,0"
  115. HorizontalAlignment="Left"
  116. VerticalAlignment="Center"
  117. Foreground="White"
  118. Text="{local:ResourceBinding Key}" />
  119. </Grid>
  120. </DataTemplate>
  121. </ItemsControl.ItemTemplate>
  122. </ItemsControl>
  123. </suki:GroupBox>
  124. </suki:GlassCard>
  125. </Flyout>
  126. </Button.Flyout>
  127. </Button>
  128. </StackPanel>
  129. <StackPanel
  130. Margin="80,60"
  131. HorizontalAlignment="Left"
  132. VerticalAlignment="Top"
  133. IsHitTestVisible="False"
  134. Orientation="Horizontal">
  135. <Border
  136. HorizontalAlignment="Left"
  137. VerticalAlignment="Top"
  138. Background="#1FAAAAAA"
  139. CornerRadius="6"
  140. IsHitTestVisible="False"
  141. IsVisible="{Binding StatisticsVisibily}">
  142. <StackPanel Margin="10">
  143. <Grid Height="20" ColumnDefinitions="80,80,80,80,80">
  144. <TextBlock
  145. HorizontalAlignment="Center"
  146. VerticalAlignment="Center"
  147. Text="{DynamicResource ChannelName}" />
  148. <TextBlock
  149. Grid.Column="1"
  150. HorizontalAlignment="Center"
  151. VerticalAlignment="Center"
  152. Text="{DynamicResource Max}" />
  153. <TextBlock
  154. Grid.Column="2"
  155. HorizontalAlignment="Center"
  156. VerticalAlignment="Center"
  157. Text="{DynamicResource Min}" />
  158. <TextBlock
  159. Grid.Column="3"
  160. HorizontalAlignment="Center"
  161. VerticalAlignment="Center"
  162. Text="{DynamicResource Rms}" />
  163. <TextBlock
  164. Grid.Column="4"
  165. HorizontalAlignment="Center"
  166. VerticalAlignment="Center"
  167. Text="{DynamicResource Avg}" />
  168. </Grid>
  169. <ItemsControl ItemsSource="{Binding Statistics}">
  170. <ItemsControl.ItemTemplate>
  171. <DataTemplate>
  172. <Grid Height="20" ColumnDefinitions="80,80,80,80,80">
  173. <TextBlock
  174. HorizontalAlignment="Center"
  175. VerticalAlignment="Center"
  176. Text="{local:ResourceBinding Name}" />
  177. <TextBlock
  178. Grid.Column="1"
  179. HorizontalAlignment="Center"
  180. VerticalAlignment="Center"
  181. Text="{Binding Max, StringFormat='{}{0:F3}'}" />
  182. <TextBlock
  183. Grid.Column="2"
  184. HorizontalAlignment="Center"
  185. VerticalAlignment="Center"
  186. Text="{Binding Min, StringFormat='{}{0:F3}'}" />
  187. <TextBlock
  188. Grid.Column="3"
  189. HorizontalAlignment="Center"
  190. VerticalAlignment="Center"
  191. Text="{Binding RMS, StringFormat='{}{0:F3}'}" />
  192. <TextBlock
  193. Grid.Column="4"
  194. HorizontalAlignment="Center"
  195. VerticalAlignment="Center"
  196. Text="{Binding Average, StringFormat='{}{0:F3}'}" />
  197. </Grid>
  198. </DataTemplate>
  199. </ItemsControl.ItemTemplate>
  200. </ItemsControl>
  201. </StackPanel>
  202. </Border>
  203. <Border
  204. Margin="10,0,0,0"
  205. HorizontalAlignment="Left"
  206. VerticalAlignment="Top"
  207. Background="#1FAAAAAA"
  208. CornerRadius="6"
  209. IsHitTestVisible="False">
  210. <Border.IsVisible>
  211. <MultiBinding Converter="{StaticResource MutliBoolConverter}">
  212. <Binding Path="THDVisibily" />
  213. <Binding Path="THDEnabled" />
  214. </MultiBinding>
  215. </Border.IsVisible>
  216. <StackPanel Margin="10">
  217. <StackPanel Orientation="Horizontal">
  218. <TextBlock Text="{local:ResourceBinding THDTitle}" />
  219. <TextBlock Text="THD" />
  220. </StackPanel>
  221. <TextBlock
  222. HorizontalAlignment="Center"
  223. VerticalAlignment="Center"
  224. Text="{Binding THD, StringFormat={}{0:P2}}" />
  225. </StackPanel>
  226. </Border>
  227. </StackPanel>
  228. </Grid>
  229. </UserControl>