luo 1 місяць тому
батько
коміт
4888d1997b

+ 38 - 0
Avalonia/ShakerApp/App.axaml

@@ -4,6 +4,7 @@
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:convert="using:ShakerApp.Convert"
     xmlns:local="using:ShakerApp"
+    xmlns:oxy="http://oxyplot.org/avalonia"
     xmlns:s="using:System"
     xmlns:suki="https://github.com/kikipoulet/SukiUI"
     RequestedThemeVariant="Default">
@@ -32,6 +33,42 @@
         <convert:BrushToColorConverter x:Key="BrushToColorConverter" />
         <convert:MemoryConverter x:Key="MemoryConverter" />
         <convert:BooleanNonConverter x:Key="BooleanNonConverter" />
+        <ControlTemplate x:Key="DefaultTrackerTemplate">
+            <oxy:TrackerControl
+                Background="#6F999999"
+                BorderBrush="Transparent"
+                CornerRadius="6"
+                HorizontalLineVisibility="False"
+                LineExtents="{Binding PlotModel.PlotArea}"
+                LineStroke="Gray"
+                Position="{Binding Position}"
+                ShowPointer="True"
+                VerticalLineVisibility="True">
+                <oxy:TrackerControl.Content>
+                    <StackPanel Margin="10">
+                        <TextBlock Text="{DynamicResource Value}" />
+                        <TextBlock>
+                            <Run Text="{Binding XAxis.Title}" />
+                            <Run Text=":" />
+                            <Run Text="{Binding TrackerDatas[0].DataPoint.X, StringFormat='{}{0:F4}'}" />
+                            <Run Text="{Binding XAxis.Unit}" />
+                        </TextBlock>
+                        <ItemsControl ItemsSource="{Binding TrackerDatas}">
+                            <ItemsControl.ItemTemplate>
+                                <DataTemplate>
+                                    <TextBlock IsVisible="{Binding Series.IsVisible}">
+                                        <Run Text="{Binding Series.Title}" />
+                                        <Run Text=":" />
+                                        <Run Text="{Binding DataPoint.Y, StringFormat='{}{0:F4}'}" />
+                                        <Run Text="{Binding Series.Tag}" />
+                                    </TextBlock>
+                                </DataTemplate>
+                            </ItemsControl.ItemTemplate>
+                        </ItemsControl>
+                    </StackPanel>
+                </oxy:TrackerControl.Content>
+            </oxy:TrackerControl>
+        </ControlTemplate>
     </Application.Resources>
     <Application.Styles>
         <Style Selector=":is(Button):pointerover">
@@ -62,6 +99,7 @@
         </Style>
 
 
+
         <!--  Add the line below to get OxyPlot UI theme applied.  -->
 
 

+ 1 - 4
Avalonia/ShakerApp/ShakerApp.csproj

@@ -30,10 +30,7 @@
     <PackageReference Include="Avalonia.Desktop" Version="11.2.3" />
     <PackageReference Include="Avalonia.Markup.Xaml.Loader" Version="11.2.3" />
     <PackageReference Include="Avalonia.Themes.Simple" Version="11.2.3" />
-    <PackageReference Include="Avalonia.Diagnostics" Version="11.2.3">
-      <IncludeAssets Condition="'$(Configuration)' != 'Debug'">None</IncludeAssets>
-      <PrivateAssets Condition="'$(Configuration)' != 'Debug'">All</PrivateAssets>
-    </PackageReference>
+    <PackageReference Include="Avalonia.Diagnostics" Version="11.2.3"/>
     <PackageReference Condition="'$(Configuration)'=='Debug'" Include="HotAvalonia" Version="2.1.0" />
     <PackageReference Condition="'$(Configuration)'=='Debug'" Include="HotAvalonia.Extensions" Version="2.1.0" />
     <PackageReference Include="MessagePack" Version="3.1.3" />

+ 1 - 1
Avalonia/ShakerApp/ViewModels/DataReview/BaseDataReviewItemViewModel.cs

@@ -412,7 +412,7 @@ namespace ShakerApp.ViewModels
             TDMS.ITDMSChannelGroup? _Group;
             private uint current = 1;
             private bool isFixed = true;
-            public override string Title => IsFixed ? "SweepCount" : "THD";
+            public override string Title => IsFixed ? "THD" : "SweepCount";
 
             public THDReviewViewModel(BaseDataReviewItemViewModel parent)
             {

+ 153 - 143
Avalonia/ShakerApp/Views/DebugView/DebugView.axaml

@@ -14,161 +14,170 @@
     mc:Ignorable="d">
     <TabControl>
         <TabItem Header="{DynamicResource Displacement}">
-            <suki:GlassCard HorizontalAlignment="Center" VerticalAlignment="Center">
-                <Grid Width="420" Height="140">
-                    <Grid.ColumnDefinitions>
-                        <ColumnDefinition />
-                        <ColumnDefinition />
-                    </Grid.ColumnDefinitions>
-                    <Grid.RowDefinitions>
-                        <RowDefinition />
-                        <RowDefinition />
-                    </Grid.RowDefinitions>
-                    <StackPanel
-                        Grid.Row="0"
-                        Grid.Column="0"
-                        HorizontalAlignment="Left"
-                        VerticalAlignment="Center"
-                        Orientation="Vertical">
-                        <TextBlock VerticalAlignment="Center" Text="{DynamicResource DisplacementP}" />
-                        <NumericUpDown
-                            Width="120"
-                            Margin="0,0,0,0"
-                            Value="{Binding DisplacementP}" />
-                    </StackPanel>
-                    <StackPanel
-                        Grid.Row="0"
-                        Grid.Column="1"
-                        HorizontalAlignment="Left"
-                        VerticalAlignment="Center"
-                        Orientation="Vertical">
-                        <TextBlock VerticalAlignment="Center" Text="{DynamicResource DisplacementI}" />
-                        <NumericUpDown
-                            Width="120"
-                            Margin="0,0,0,0"
-                            Value="{Binding DisplacementI}" />
-                    </StackPanel>
+            <suki:GlassCard
+                Margin="10"
+                HorizontalAlignment="Left"
+                VerticalAlignment="Top">
+                <suki:GroupBox Header="{DynamicResource DisplacementPI}">
+                    <Grid Width="420" Height="140">
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition />
+                            <ColumnDefinition />
+                        </Grid.ColumnDefinitions>
+                        <Grid.RowDefinitions>
+                            <RowDefinition />
+                            <RowDefinition />
+                        </Grid.RowDefinitions>
+                        <StackPanel
+                            Grid.Row="0"
+                            Grid.Column="0"
+                            HorizontalAlignment="Left"
+                            VerticalAlignment="Center"
+                            Orientation="Vertical">
+                            <TextBlock VerticalAlignment="Center" Text="{DynamicResource DisplacementP}" />
+                            <NumericUpDown
+                                Width="120"
+                                Margin="0,0,0,0"
+                                Value="{Binding DisplacementP}" />
+                        </StackPanel>
+                        <StackPanel
+                            Grid.Row="0"
+                            Grid.Column="1"
+                            HorizontalAlignment="Left"
+                            VerticalAlignment="Center"
+                            Orientation="Vertical">
+                            <TextBlock VerticalAlignment="Center" Text="{DynamicResource DisplacementI}" />
+                            <NumericUpDown
+                                Width="120"
+                                Margin="0,0,0,0"
+                                Value="{Binding DisplacementI}" />
+                        </StackPanel>
 
-                    <StackPanel
-                        Grid.Row="1"
-                        Grid.Column="0"
-                        HorizontalAlignment="Left"
-                        VerticalAlignment="Center"
-                        Orientation="Vertical">
-                        <TextBlock VerticalAlignment="Center" Text="{DynamicResource MaxDisplacementIntegral}" />
-                        <NumericUpDown
-                            Width="120"
-                            Margin="0,0,0,0"
-                            Value="{Binding MaxDisplacementIntegral}" />
-                    </StackPanel>
+                        <StackPanel
+                            Grid.Row="1"
+                            Grid.Column="0"
+                            HorizontalAlignment="Left"
+                            VerticalAlignment="Center"
+                            Orientation="Vertical">
+                            <TextBlock VerticalAlignment="Center" Text="{DynamicResource MaxDisplacementIntegral}" />
+                            <NumericUpDown
+                                Width="120"
+                                Margin="0,0,0,0"
+                                Value="{Binding MaxDisplacementIntegral}" />
+                        </StackPanel>
 
-                </Grid>
+                    </Grid>
+                </suki:GroupBox>
             </suki:GlassCard>
         </TabItem>
 
         <TabItem Header="{DynamicResource ServoValveConfig}">
-            <suki:GlassCard HorizontalAlignment="Center" VerticalAlignment="Center">
-                <Grid Width="520" Height="340">
-                    <Grid.ColumnDefinitions>
-                        <ColumnDefinition />
-                        <ColumnDefinition />
-                    </Grid.ColumnDefinitions>
-                    <Grid.RowDefinitions>
-                        <RowDefinition Height="66" />
-                        <RowDefinition Height="*" />
-                    </Grid.RowDefinitions>
-
-                    <StackPanel
-                        Grid.Column="1"
-                        HorizontalAlignment="Left"
-                        VerticalAlignment="Center"
-                        Orientation="Vertical">
-                        <TextBlock VerticalAlignment="Center" Text="{DynamicResource DisOpenLoop}" />
-                        <ToggleSwitch IsChecked="{Binding DisplacementOpenLoop}" />
-                    </StackPanel>
-                    <StackPanel Grid.Column="0">
-                        <TextBlock Text="{DynamicResource ServoValvePolarity}" />
-                        <ComboBox
-                            Width="120"
+            <suki:GlassCard
+                Margin="10"
+                HorizontalAlignment="Left"
+                VerticalAlignment="Top">
+                <suki:GroupBox Header="{DynamicResource ServoValveConfig}">
+                    <Grid Width="520" Height="320">
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition />
+                            <ColumnDefinition />
+                        </Grid.ColumnDefinitions>
+                        <Grid.RowDefinitions>
+                            <RowDefinition Height="66" />
+                            <RowDefinition Height="*" />
+                        </Grid.RowDefinitions>
+                        <StackPanel
+                            Grid.Column="1"
                             HorizontalAlignment="Left"
                             VerticalAlignment="Center"
-                            ItemsSource="{Binding ValvePolarity, Converter={StaticResource EnumToCollectionConverter}, Mode=OneTime}"
-                            SelectedValue="{Binding Path=ValvePolarity}"
-                            SelectedValueBinding="{Binding Value}">
-                            <ComboBox.ItemTemplate>
-                                <DataTemplate>
-                                    <TextBlock Text="{local:ResourceBinding Key}" />
-                                </DataTemplate>
-                            </ComboBox.ItemTemplate>
-                        </ComboBox>
-                    </StackPanel>
-                    <StackPanel
-                        Grid.Row="1"
-                        Grid.ColumnSpan="2"
-                        Margin="0,0,10,0"
-                        Orientation="Vertical">
-                        <Grid Height="{StaticResource ItemHeight}" Background="LightGray">
-                            <Grid.ColumnDefinitions>
-                                <ColumnDefinition Width="66" />
-                                <ColumnDefinition Width="*" />
-                                <ColumnDefinition Width="*" />
-                            </Grid.ColumnDefinitions>
-                            <TextBlock
-                                HorizontalAlignment="Center"
+                            Orientation="Vertical">
+                            <TextBlock VerticalAlignment="Center" Text="{DynamicResource DisOpenLoop}" />
+                            <ToggleSwitch IsChecked="{Binding DisplacementOpenLoop}" />
+                        </StackPanel>
+                        <StackPanel Grid.Column="0">
+                            <TextBlock Text="{DynamicResource ServoValvePolarity}" />
+                            <ComboBox
+                                Width="120"
+                                HorizontalAlignment="Left"
                                 VerticalAlignment="Center"
-                                Text="{DynamicResource ServoValveIndex}" />
-                            <TextBlock
-                                Grid.Column="1"
-                                HorizontalAlignment="Center"
-                                VerticalAlignment="Center">
-                                <Run Text="{DynamicResource ServoValveOffset}" />
-                                <Run Text="(V)" />
-                            </TextBlock>
-                            <TextBlock
-                                Grid.Column="2"
-                                HorizontalAlignment="Center"
-                                VerticalAlignment="Center">
-                                <Run Text="{DynamicResource OpenLoopVoltage}" />
-                                <Run Text="(V)" />
-                            </TextBlock>
-                        </Grid>
-                        <ItemsControl ItemsSource="{Binding ValveConfig}">
-                            <ItemsControl.ItemTemplate>
-                                <DataTemplate>
-                                    <Grid Height="{StaticResource ItemHeight}" Margin="0,4,0,4">
-                                        <Grid.ColumnDefinitions>
-                                            <ColumnDefinition Width="66" />
-                                            <ColumnDefinition Width="*" />
-                                            <ColumnDefinition Width="*" />
-                                        </Grid.ColumnDefinitions>
-                                        <TextBlock
-                                            HorizontalAlignment="Center"
-                                            VerticalAlignment="Center"
-                                            Text="{Binding Index}" />
-                                        <NumericUpDown
-                                            Grid.Column="1"
-                                            Width="120"
-                                            HorizontalAlignment="Center"
-                                            VerticalAlignment="Center"
-                                            Value="{Binding Value.Bias}" />
-                                        <NumericUpDown
-                                            Grid.Column="2"
-                                            Width="120"
-                                            HorizontalAlignment="Center"
-                                            VerticalAlignment="Center"
-                                            IsEnabled="{Binding $parent[ItemsControl].DataContext.DisplacementOpenLoop}"
-                                            Value="{Binding Value.OpenLoopDrive}" />
-                                    </Grid>
-                                </DataTemplate>
-                            </ItemsControl.ItemTemplate>
-                        </ItemsControl>
-                    </StackPanel>
-                </Grid>
+                                ItemsSource="{Binding ValvePolarity, Converter={StaticResource EnumToCollectionConverter}, Mode=OneTime}"
+                                SelectedValue="{Binding Path=ValvePolarity}"
+                                SelectedValueBinding="{Binding Value}">
+                                <ComboBox.ItemTemplate>
+                                    <DataTemplate>
+                                        <TextBlock Text="{local:ResourceBinding Key}" />
+                                    </DataTemplate>
+                                </ComboBox.ItemTemplate>
+                            </ComboBox>
+                        </StackPanel>
+                        <StackPanel
+                            Grid.Row="1"
+                            Grid.ColumnSpan="2"
+                            Margin="0,0,10,0"
+                            Orientation="Vertical">
+                            <Grid Height="{StaticResource ItemHeight}" Background="LightGray">
+                                <Grid.ColumnDefinitions>
+                                    <ColumnDefinition Width="66" />
+                                    <ColumnDefinition Width="*" />
+                                    <ColumnDefinition Width="*" />
+                                </Grid.ColumnDefinitions>
+                                <TextBlock
+                                    HorizontalAlignment="Center"
+                                    VerticalAlignment="Center"
+                                    Text="{DynamicResource ServoValveIndex}" />
+                                <TextBlock
+                                    Grid.Column="1"
+                                    HorizontalAlignment="Center"
+                                    VerticalAlignment="Center">
+                                    <Run Text="{DynamicResource ServoValveOffset}" />
+                                    <Run Text="(V)" />
+                                </TextBlock>
+                                <TextBlock
+                                    Grid.Column="2"
+                                    HorizontalAlignment="Center"
+                                    VerticalAlignment="Center">
+                                    <Run Text="{DynamicResource OpenLoopVoltage}" />
+                                    <Run Text="(V)" />
+                                </TextBlock>
+                            </Grid>
+                            <ItemsControl ItemsSource="{Binding ValveConfig}">
+                                <ItemsControl.ItemTemplate>
+                                    <DataTemplate>
+                                        <Grid Height="{StaticResource ItemHeight}" Margin="0,4,0,4">
+                                            <Grid.ColumnDefinitions>
+                                                <ColumnDefinition Width="66" />
+                                                <ColumnDefinition Width="*" />
+                                                <ColumnDefinition Width="*" />
+                                            </Grid.ColumnDefinitions>
+                                            <TextBlock
+                                                HorizontalAlignment="Center"
+                                                VerticalAlignment="Center"
+                                                Text="{Binding Index}" />
+                                            <NumericUpDown
+                                                Grid.Column="1"
+                                                Width="120"
+                                                HorizontalAlignment="Center"
+                                                VerticalAlignment="Center"
+                                                Value="{Binding Value.Bias}" />
+                                            <NumericUpDown
+                                                Grid.Column="2"
+                                                Width="120"
+                                                HorizontalAlignment="Center"
+                                                VerticalAlignment="Center"
+                                                IsEnabled="{Binding $parent[ItemsControl].DataContext.DisplacementOpenLoop}"
+                                                Value="{Binding Value.OpenLoopDrive}" />
+                                        </Grid>
+                                    </DataTemplate>
+                                </ItemsControl.ItemTemplate>
+                            </ItemsControl>
+                        </StackPanel>
+                    </Grid>
+                </suki:GroupBox>
             </suki:GlassCard>
         </TabItem>
 
         <TabItem Header="{DynamicResource Other}">
-            <Grid>
+            <Grid Margin="10">
                 <Grid.ColumnDefinitions>
                     <ColumnDefinition />
                     <ColumnDefinition />
@@ -223,6 +232,7 @@
                                     Width="120"
                                     Margin="4,0,0,0"
                                     Increment="0.01"
+                                    Maximum="500"
                                     Minimum="10"
                                     Value="{Binding FlutterFrequency}" />
                                 <TextBlock
@@ -249,7 +259,7 @@
                                     Margin="4,0,0,0"
                                     HorizontalAlignment="Center"
                                     VerticalAlignment="Center"
-                                    Text="mm" />
+                                    Text="V" />
                             </StackPanel>
                         </StackPanel>
                     </suki:GroupBox>

+ 1 - 39
Avalonia/ShakerApp/Views/ShakerConfig/RandomConfigView.axaml

@@ -18,45 +18,7 @@
 
     <Grid RowDefinitions="1.2*,*">
         <Grid ColumnDefinitions="*,*,*">
-            <oxy:PlotView Background="Transparent" Model="{Binding AccelerationModel}">
-                <oxy:PlotView.DefaultTrackerTemplate>
-                    <ControlTemplate>
-                        <oxy:TrackerControl
-                            Background="#6F999999"
-                            BorderBrush="Transparent"
-                            CornerRadius="6"
-                            HorizontalLineVisibility="False"
-                            LineExtents="{Binding PlotModel.PlotArea}"
-                            LineStroke="Gray"
-                            Position="{Binding Position}"
-                            ShowPointer="True"
-                            VerticalLineVisibility="True">
-                            <oxy:TrackerControl.Content>
-                                <StackPanel Margin="10">
-                                    <TextBlock Text="{DynamicResource Value}" />
-                                    <TextBlock>
-                                        <Run Text="{Binding XAxis.Title}" />
-                                        <Run Text=":" />
-                                        <Run Text="{Binding TrackerDatas[0].DataPoint.X, StringFormat='{}{0:F2}'}" />
-                                        <Run Text="{Binding XAxis.Unit}" />
-                                    </TextBlock>
-                                    <ItemsControl ItemsSource="{Binding TrackerDatas}">
-                                        <ItemsControl.ItemTemplate>
-                                            <DataTemplate>
-                                                <TextBlock IsVisible="{Binding Series.IsVisible}">
-                                                    <Run Text="{Binding Series.Title}" />
-                                                    <Run Text=":" />
-                                                    <Run Text="{Binding DataPoint.Y, StringFormat='{}{0:F4}'}" />
-                                                    <Run Text="{Binding $parent[ItemsControl].DataContext.YAxis.Unit}" />
-                                                </TextBlock>
-                                            </DataTemplate>
-                                        </ItemsControl.ItemTemplate>
-                                    </ItemsControl>
-                                </StackPanel>
-                            </oxy:TrackerControl.Content>
-                        </oxy:TrackerControl>
-                    </ControlTemplate>
-                </oxy:PlotView.DefaultTrackerTemplate>
+            <oxy:PlotView Background="Transparent" Model="{Binding AccelerationModel}">l
             </oxy:PlotView>
             <Button
                 Margin="0,0,16,56"

+ 41 - 0
Avalonia/ShakerApp/Views/ShakerConfig/ShakerConfigView.axaml

@@ -319,5 +319,46 @@
                 </suki:GroupBox>
             </suki:GlassCard>
         </TabItem>
+        <TabItem
+            Height="46"
+            Header="Debug"
+            IsVisible="{Binding Source={x:Static vm:MainViewModel.Default}, Path=CanDebug}">
+            <suki:GlassCard
+                Width="400"
+                Height="160"
+                Margin="4"
+                HorizontalAlignment="Left"
+                VerticalAlignment="Top">
+                <suki:GroupBox Header="{DynamicResource Frequency}">
+                    <UniformGrid Columns="1">
+                        <StackPanel Height="46" Orientation="Horizontal">
+                            <TextBlock VerticalAlignment="Center">
+                                <Run Text="{DynamicResource MinFrequency}" />
+                                <Run Text="(Hz):" />
+                            </TextBlock>
+                            <NumericUpDown
+                                Width="120"
+                                Margin="4,0,0,0"
+                                Increment="0.01"
+                                Maximum="{Binding MaxFrequency}"
+                                Minimum="0"
+                                Value="{Binding MinFrequency}" />
+                        </StackPanel>
+                        <StackPanel Height="46" Orientation="Horizontal">
+                            <TextBlock VerticalAlignment="Center">
+                                <Run Text="{DynamicResource MaxFrequency}" />
+                                <Run Text="(Hz):" />
+                            </TextBlock>
+                            <NumericUpDown
+                                Width="120"
+                                Margin="4,0,0,0"
+                                Increment="0.01"
+                                Minimum="{Binding MinFrequency}"
+                                Value="{Binding MaxFrequency}" />
+                        </StackPanel>
+                    </UniformGrid>
+                </suki:GroupBox>
+            </suki:GlassCard>
+        </TabItem>
     </TabControl>
 </UserControl>

+ 8 - 123
Avalonia/ShakerApp/Views/ShakerConfig/SweepConfigView.axaml

@@ -20,47 +20,10 @@
     </UserControl.Resources>
     <Grid RowDefinitions="1.2*,*">
         <Grid ColumnDefinitions="*,*,*">
-            <oxy:PlotView Background="Transparent" Model="{Binding AccelerationModel}">
-
-                <oxy:PlotView.DefaultTrackerTemplate>
-                    <ControlTemplate>
-                        <oxy:TrackerControl
-                            Background="#6F999999"
-                            BorderBrush="Transparent"
-                            CornerRadius="6"
-                            HorizontalLineVisibility="False"
-                            LineExtents="{Binding PlotModel.PlotArea}"
-                            LineStroke="Gray"
-                            Position="{Binding Position}"
-                            ShowPointer="True"
-                            VerticalLineVisibility="True">
-                            <oxy:TrackerControl.Content>
-                                <StackPanel Margin="10">
-                                    <TextBlock Text="{DynamicResource Value}" />
-                                    <TextBlock>
-                                        <Run Text="{Binding XAxis.Title}" />
-                                        <Run Text=":" />
-                                        <Run Text="{Binding TrackerDatas[0].DataPoint.X, StringFormat='{}{0:F2}'}" />
-                                        <Run Text="{Binding XAxis.Unit}" />
-                                    </TextBlock>
-                                    <ItemsControl ItemsSource="{Binding TrackerDatas}">
-                                        <ItemsControl.ItemTemplate>
-                                            <DataTemplate>
-                                                <TextBlock IsVisible="{Binding Series.IsVisible}">
-                                                    <Run Text="{Binding Series.Title}" />
-                                                    <Run Text=":" />
-                                                    <Run Text="{Binding DataPoint.Y, StringFormat='{}{0:F4}'}" />
-                                                    <Run Text="{Binding $parent[ItemsControl].DataContext.YAxis.Unit}" />
-                                                </TextBlock>
-                                            </DataTemplate>
-                                        </ItemsControl.ItemTemplate>
-                                    </ItemsControl>
-                                </StackPanel>
-                            </oxy:TrackerControl.Content>
-                        </oxy:TrackerControl>
-                    </ControlTemplate>
-                </oxy:PlotView.DefaultTrackerTemplate>
-            </oxy:PlotView>
+            <oxy:PlotView
+                Background="Transparent"
+                DefaultTrackerTemplate="{StaticResource DefaultTrackerTemplate}"
+                Model="{Binding AccelerationModel}" />
             <Button
                 Margin="0,0,16,56"
                 HorizontalAlignment="Right"
@@ -86,47 +49,8 @@
             <oxy:PlotView
                 Grid.Column="1"
                 Background="Transparent"
-                Model="{Binding VelocityModel}">
-
-                <oxy:PlotView.DefaultTrackerTemplate>
-                    <ControlTemplate>
-                        <oxy:TrackerControl
-                            Background="#6F999999"
-                            BorderBrush="Transparent"
-                            CornerRadius="6"
-                            HorizontalLineVisibility="False"
-                            LineExtents="{Binding PlotModel.PlotArea}"
-                            LineStroke="Gray"
-                            Position="{Binding Position}"
-                            ShowPointer="True"
-                            VerticalLineVisibility="True">
-                            <oxy:TrackerControl.Content>
-                                <StackPanel Margin="10">
-                                    <TextBlock Text="{DynamicResource Value}" />
-                                    <TextBlock>
-                                        <Run Text="{Binding XAxis.Title}" />
-                                        <Run Text=":" />
-                                        <Run Text="{Binding TrackerDatas[0].DataPoint.X, StringFormat='{}{0:F2}'}" />
-                                        <Run Text="{Binding XAxis.Unit}" />
-                                    </TextBlock>
-                                    <ItemsControl ItemsSource="{Binding TrackerDatas}">
-                                        <ItemsControl.ItemTemplate>
-                                            <DataTemplate>
-                                                <TextBlock IsVisible="{Binding Series.IsVisible}">
-                                                    <Run Text="{Binding Series.Title}" />
-                                                    <Run Text=":" />
-                                                    <Run Text="{Binding DataPoint.Y, StringFormat='{}{0:F4}'}" />
-                                                    <Run Text="{Binding $parent[ItemsControl].DataContext.YAxis.Unit}" />
-                                                </TextBlock>
-                                            </DataTemplate>
-                                        </ItemsControl.ItemTemplate>
-                                    </ItemsControl>
-                                </StackPanel>
-                            </oxy:TrackerControl.Content>
-                        </oxy:TrackerControl>
-                    </ControlTemplate>
-                </oxy:PlotView.DefaultTrackerTemplate>
-            </oxy:PlotView>
+                DefaultTrackerTemplate="{StaticResource DefaultTrackerTemplate}"
+                Model="{Binding VelocityModel}" />
             <Button
                 Grid.Column="1"
                 Margin="0,0,16,56"
@@ -153,47 +77,8 @@
             <oxy:PlotView
                 Grid.Column="2"
                 Background="Transparent"
-                Model="{Binding DisplacementModel}">
-
-                <oxy:PlotView.DefaultTrackerTemplate>
-                    <ControlTemplate>
-                        <oxy:TrackerControl
-                            Background="#6F999999"
-                            BorderBrush="Transparent"
-                            CornerRadius="6"
-                            HorizontalLineVisibility="False"
-                            LineExtents="{Binding PlotModel.PlotArea}"
-                            LineStroke="Gray"
-                            Position="{Binding Position}"
-                            ShowPointer="True"
-                            VerticalLineVisibility="True">
-                            <oxy:TrackerControl.Content>
-                                <StackPanel Margin="10">
-                                    <TextBlock Text="{DynamicResource Value}" />
-                                    <TextBlock>
-                                        <Run Text="{Binding XAxis.Title}" />
-                                        <Run Text=":" />
-                                        <Run Text="{Binding TrackerDatas[0].DataPoint.X, StringFormat='{}{0:F2}'}" />
-                                        <Run Text="{Binding XAxis.Unit}" />
-                                    </TextBlock>
-                                    <ItemsControl ItemsSource="{Binding TrackerDatas}">
-                                        <ItemsControl.ItemTemplate>
-                                            <DataTemplate>
-                                                <TextBlock IsVisible="{Binding Series.IsVisible}">
-                                                    <Run Text="{Binding Series.Title}" />
-                                                    <Run Text=":" />
-                                                    <Run Text="{Binding DataPoint.Y, StringFormat='{}{0:F4}'}" />
-                                                    <Run Text="{Binding $parent[ItemsControl].DataContext.YAxis.Unit}" />
-                                                </TextBlock>
-                                            </DataTemplate>
-                                        </ItemsControl.ItemTemplate>
-                                    </ItemsControl>
-                                </StackPanel>
-                            </oxy:TrackerControl.Content>
-                        </oxy:TrackerControl>
-                    </ControlTemplate>
-                </oxy:PlotView.DefaultTrackerTemplate>
-            </oxy:PlotView>
+                DefaultTrackerTemplate="{StaticResource DefaultTrackerTemplate}"
+                Model="{Binding DisplacementModel}" />
             <Button
                 Grid.Column="2"
                 Margin="0,0,16,56"

+ 3 - 3
Avalonia/ShakerApp/Views/ShakerStatusControl/ShakerStatusControlView.axaml

@@ -48,7 +48,7 @@
                 IsEnabled="{Binding RiseTableEnabled}">
                 <StackPanel Orientation="Horizontal">
                     <PathIcon Data="{StaticResource UpGeometry}" />
-                    <TextBlock Text="{DynamicResource UpTable}" />
+                    <TextBlock Margin="4,0,0,0" Text="{DynamicResource UpTable}" />
                 </StackPanel>
             </Button>
 
@@ -60,7 +60,7 @@
                 IsEnabled="{Binding DropTableEnabled}">
                 <StackPanel Orientation="Horizontal">
                     <PathIcon Data="{StaticResource DownGeometry}" />
-                    <TextBlock Text="{DynamicResource DownTable}" />
+                    <TextBlock Margin="4,0,0,0" Text="{DynamicResource DownTable}" />
                 </StackPanel>
             </Button>
             <StackPanel Margin="0,10,10,0">
@@ -77,7 +77,7 @@
                 IsEnabled="{Binding RestEnabeld}">
                 <StackPanel Orientation="Horizontal">
                     <PathIcon Data="{StaticResource ResetGeometry}" />
-                    <TextBlock Text="{DynamicResource Reset}" />
+                    <TextBlock Margin="4,0,0,0" Text="{DynamicResource Reset}" />
                 </StackPanel>
             </Button>
             <Border

+ 2 - 41
Avalonia/ShakerApp/Views/SignalPreview/AnalogSignalPreviewView.axaml

@@ -16,47 +16,8 @@
         <oxy:PlotView
             Background="Transparent"
             Controller="{Binding PlotController}"
-            Model="{Binding PlotModel}">
-
-            <oxy:PlotView.DefaultTrackerTemplate>
-                <ControlTemplate>
-                    <oxy:TrackerControl
-                        Background="#6F999999"
-                        BorderBrush="Transparent"
-                        CornerRadius="6"
-                        HorizontalLineVisibility="False"
-                        LineExtents="{Binding PlotModel.PlotArea}"
-                        LineStroke="Gray"
-                        Position="{Binding Position}"
-                        ShowPointer="True"
-                        VerticalLineVisibility="True">
-                        <oxy:TrackerControl.Content>
-                            <StackPanel Margin="10">
-                                <TextBlock Text="{DynamicResource Value}" />
-                                <TextBlock>
-                                    <Run Text="{Binding XAxis.Title}" />
-                                    <Run Text=":" />
-                                    <Run Text="{Binding TrackerDatas[0].DataPoint.X, StringFormat='{}{0:F2}'}" />
-                                    <Run Text="{Binding XAxis.Unit}" />
-                                </TextBlock>
-                                <ItemsControl ItemsSource="{Binding TrackerDatas}">
-                                    <ItemsControl.ItemTemplate>
-                                        <DataTemplate>
-                                            <TextBlock IsVisible="{Binding Series.IsVisible}">
-                                                <Run Text="{Binding Series.Title}" />
-                                                <Run Text=":" />
-                                                <Run Text="{Binding DataPoint.Y, StringFormat='{}{0:F4}'}" />
-                                                <Run Text="{Binding $parent[ItemsControl].DataContext.YAxis.Unit}" />
-                                            </TextBlock>
-                                        </DataTemplate>
-                                    </ItemsControl.ItemTemplate>
-                                </ItemsControl>
-                            </StackPanel>
-                        </oxy:TrackerControl.Content>
-                    </oxy:TrackerControl>
-                </ControlTemplate>
-            </oxy:PlotView.DefaultTrackerTemplate>
-        </oxy:PlotView>
+            DefaultTrackerTemplate="{StaticResource DefaultTrackerTemplate}"
+            Model="{Binding PlotModel}" />
         <Button
             Margin="0,0,16,56"
             HorizontalAlignment="Right"

+ 5 - 2
Language/Zh-CN/Language.axaml

@@ -47,8 +47,8 @@
     <s:String x:Key="FlutterConfig">颤振参数</s:String>
     <s:String x:Key="FlutterFrequency">频率</s:String>
     <s:String x:Key="FlutterAmpt">幅值</s:String>
-    <s:String x:Key="DisplacementP">P</s:String>
-    <s:String x:Key="DisplacementI">I</s:String>
+    <s:String x:Key="DisplacementP">P参数</s:String>
+    <s:String x:Key="DisplacementI">I参数</s:String>
     <s:String x:Key="DebugConfig">调试参数</s:String>
     <s:String x:Key="MaxDisplacementIntegral">最大积分电压</s:String>
     <s:String x:Key="SweepControl">扫频控制参数</s:String>
@@ -122,6 +122,8 @@
     <s:String x:Key="SignalTypeSweep">扫频</s:String>
     <s:String x:Key="MaxFreq">截止频率</s:String>
     <s:String x:Key="MinFreq">开始频率</s:String>
+    <s:String x:Key="MaxFrequency">最大频率</s:String>
+    <s:String x:Key="MinFrequency">最小频率</s:String>
     <s:String x:Key="SweepCount">扫频次数</s:String>
     <s:String x:Key="THD">THD</s:String>
     <s:String x:Key="SweepIndex">已扫次数</s:String>
@@ -164,6 +166,7 @@
     <s:String x:Key="SweepTimeSetModel">扫频时间设置模式</s:String>
     <s:String x:Key="SweepTimeSetModelTime">时间</s:String>
     <s:String x:Key="SweepTimeSetModelOCT">OCT</s:String>
+    <s:String x:Key="DisplacementPI">位移PI参数</s:String>
 
 
     <s:String x:Key="PlotConfig">曲线设置</s:String>

+ 6 - 0
OxyPlot/OxyPlot/PlotController/Manipulators/TouchTrackerManipulator.cs

@@ -7,6 +7,8 @@
 // </summary>
 // --------------------------------------------------------------------------------------------------------------------
 
+using System.Linq;
+
 namespace OxyPlot
 {
     /// <summary>
@@ -141,6 +143,10 @@ namespace OxyPlot
             if (result != null)
             {
                 result.PlotModel = this.PlotView.ActualModel;
+                foreach (var item in result.PlotModel.Series.OfType<OxyPlot.Series.DataPointSeries>().ToList())
+                {
+                    result.TrackerDatas.Add(new TrackerData(item, item.ActualPoints[(int)result.Index]));
+                }
                 this.PlotView.ShowTracker(result);
                 this.PlotView.ActualModel.RaiseTrackerChanged(result);
             }