Sic.Framework/MECF.Framework.UI.Core/Control/LineDataChart.xaml

263 lines
22 KiB
XML

<UserControl x:Class="Aitex.Core.UI.Control.LineDataChart"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:sciChart="http://schemas.abtsoftware.co.uk/scichart"
xmlns:cv="clr-namespace:Aitex.Core.UI.Converters"
mc:Ignorable="d"
d:DesignHeight="600" d:DesignWidth="1000">
<UserControl.Resources>
<Style TargetType="ToggleButton">
<Setter Property="Focusable" Value="False" />
<Setter Property="Height" Value="22" />
<Setter Property="Width" Value="80" />
<Setter Property="FontSize" Value="11" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0.5" />
</Style>
<cv:LineColorConverter x:Key="colorConverter"/>
<cv:bool2VisibilityConverter x:Key="bool2VisibilityConverter"/>
<cv:Visibility2boolConverter x:Key="vis2bool" />
<cv:RolloverDataTimeConverter x:Key="rolloverDataTimeConverter"/>
<cv:ColorToBrushConverter x:Key="ColorToBrushConverter"/>
<cv:RolloverDataPointerInfoConverter x:Key="rolloverDataPointerInfoConverter"/>
<!-- Template for the RolloverModifier tooltip to display AxisInfo collection (result of hit test) -->
<ControlTemplate x:Key="RolloverLabelTemplate" TargetType="sciChart:TemplatableControl">
<Border Background="#AAFFFFFF" BorderBrush="{Binding SeriesColor, Converter={StaticResource ColorToBrushConverter}}" BorderThickness="2" CornerRadius="5">
<StackPanel Margin="5">
<TextBlock FontSize="12" FontWeight="Bold" Foreground="{Binding SeriesColor, Converter={StaticResource ColorToBrushConverter}}" Text="{Binding SeriesName}"/>
<TextBlock FontSize="11" Foreground="{Binding SeriesColor, Converter={StaticResource ColorToBrushConverter}}">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource rolloverDataPointerInfoConverter}">
<Binding Path="XValue"/>
<Binding Path="Value"/>
<Binding Path="RenderableSeries"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</Border>
</ControlTemplate>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="dataConfigPanelColumn" MinWidth="0" Width="0"/>
<ColumnDefinition Width="0" />
<ColumnDefinition Width="400*" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="2">
<!-- Create the chart surface -->
<sciChart:SciChartSurface Name="sciChart" RenderableSeries="{Binding RenderableSeries}"
sciChart:ThemeManager.Theme="ExpressionLight"
Padding="0,0,0,0"
MouseDoubleClick="sciChart_MouseDoubleClick"
DebugWhyDoesntSciChartRender="False" BorderBrush="Gray" Focusable="False" IsTabStop="False">
<!-- Create an X Axis -->
<sciChart:SciChartSurface.XAxis>
<sciChart:DateTimeAxis DrawMinorTicks="False"
DrawMinorGridLines="False"
DrawMajorBands="False"
DrawMajorGridLines="False"
Margin="0,0,0,0"
SubDayTextFormatting="HH:mm:ss"
TitleFontSize="15"
FontSize="20"
TextFormatting="HH:mm:ss"
Id="DefaultAxisId" TitleFontWeight="Normal" />
</sciChart:SciChartSurface.XAxis>
<!-- Create a Y Axis -->
<sciChart:SciChartSurface.YAxis>
<sciChart:NumericAxis DrawMinorTicks="False" Visibility="Visible"
DrawMinorGridLines="False"
AxisAlignment="Right"
Id="DefaultAxisId"
MajorDelta="0.1"
MinorDelta="0.1"
DrawMajorBands="False"
Focusable="False" BorderThickness="0"
AutoRange="Always" DrawLabels="False"
Width="0"
DrawMajorGridLines="True" DrawMajorTicks="False">
<sciChart:NumericAxis.GrowBy>
<sciChart:DoubleRange Min="0.1" Max="0.1"/>
</sciChart:NumericAxis.GrowBy>
</sciChart:NumericAxis>
</sciChart:SciChartSurface.YAxis>
<!-- Create Y Axes on the Left and Right -->
<sciChart:SciChartSurface.YAxes>
<sciChart:NumericAxis TickTextBrush="Black" Id="PressureYAxisId" AxisAlignment="Left" MinWidth="75" MaxWidth="75" MouseEnter="NumericAxis_Pyro_MouseEnter" MouseLeave="NumericAxis_Pyro_MouseLeave" FontSize="20">
<sciChart:NumericAxis.GrowBy>
<sciChart:DoubleRange Min="0.1" Max="0.1"/>
</sciChart:NumericAxis.GrowBy>
</sciChart:NumericAxis>
<sciChart:NumericAxis TickTextBrush="Black" Id="GeneralYAxisId" AxisAlignment="Right" MinWidth="75" MaxWidth="75" MouseLeave="NumericAxis_Reflect_MouseLeave" MouseEnter="NumericAxis_Reflect_MouseEnter" FontSize="20">
<sciChart:NumericAxis.GrowBy>
<sciChart:DoubleRange Min="0.1" Max="0.1"/>
</sciChart:NumericAxis.GrowBy>
</sciChart:NumericAxis>
<!--<sciChart:NumericAxis TickTextBrush="Green" Id="CurvatureAxisId" AxisAlignment="Right" MinWidth="35" MaxWidth="35" MouseEnter="NumericAxis_Wrap_MouseEnter" MouseLeave="NumericAxis_Wrap_MouseLeave" FontSize="10">
<sciChart:NumericAxis.GrowBy>
<sciChart:DoubleRange Min="0.1" Max="0.1"/>
</sciChart:NumericAxis.GrowBy>
</sciChart:NumericAxis>-->
</sciChart:SciChartSurface.YAxes>
<!-- Vertical Lines Annotations>
<sciChart:SciChartSurface.Annotations>
<sciChart:VerticalLineAnnotation x:Name="vertical_Line1" X1="{Binding Time1,Mode=TwoWay}" X2="{Binding Time1,Mode=TwoWay}" Stroke="Red" VerticalAlignment="Stretch" ShowLabel="True" StrokeThickness="1.5" IsEditable="True" LabelTextFormatting="yyyy/MM/dd HH:mm:ss" IsHidden="True" LabelPlacement="Bottom" FontSize="10" Padding="0,0,0,20" />
<sciChart:VerticalLineAnnotation x:Name="vertical_Line2" X1="{Binding Time2,Mode=TwoWay}" X2="{Binding Time2,Mode=TwoWay}" Stroke="Purple" VerticalAlignment="Stretch" ShowLabel="True" StrokeThickness="1.5" IsEditable="True" LabelTextFormatting="yyyy/MM/dd HH:mm:ss" IsHidden="True" LabelPlacement="Bottom" FontSize="10" />
</sciChart:SciChartSurface.Annotations-->
<!-- Specify interactivity modifiers -->
<sciChart:SciChartSurface.ChartModifier>
<sciChart:ModifierGroup ExecuteOn="MouseDoubleClick">
<!-- Provides selection of series and custom styling to the selected series -->
<!--<sciChart:SeriesSelectionModifier ExecuteOn="MouseLeftButton" ReceiveHandledEvents="True">
<sciChart:SeriesSelectionModifier.SelectedSeriesStyle>
<Style TargetType="sciChart:BaseRenderableSeries">
<Setter Property="Width" Value="3"/>
<Setter Property="PointMarkerTemplate">
<Setter.Value>
<ControlTemplate>
<Ellipse Fill="#FFAA00AA" Stroke="Red" Width="8" Height="8"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</sciChart:SeriesSelectionModifier.SelectedSeriesStyle>
</sciChart:SeriesSelectionModifier>-->
<sciChart:RubberBandXyZoomModifier x:Name="rubberBandZoomModifier" IsEnabled="True"
IsXAxisOnly="False"
ZoomExtentsY="False"
IsAnimated="True" ExecuteOn="MouseLeftButton" ReceiveHandledEvents="True" />
<!--<sciChart:ZoomExtentsModifier x:Name="zoomExtentsModifier" ExecuteOn="MouseDoubleClick"/>-->
<sciChart:CursorModifier IsEnabled="True" ShowTooltipOn="MouseOver" ShowAxisLabels="True" SourceMode="AllSeries" ShowTooltip="False" />
<!-- Provides a data source for the legend control -->
<sciChart:LegendModifier ShowLegend="False" GetLegendDataFor="AllSeries" x:Name="legendModifier"/>
<!--<sciChart:RubberBandXyZoomModifier IsEnabled="True" IsXAxisOnly="True"/>-->
<!--<sciChart:CursorModifier IsEnabled="True"
ShowAxisLabels="True"
ShowTooltip="True" />-->
<!--自由平移-->
<sciChart:ZoomPanModifier x:Name="zoomPanModifier" IsEnabled="True" ExecuteOn="MouseRightButton" ClipModeX="None" />
<!--移动鼠标时动态显示当前数据值-->
<sciChart:RolloverModifier x:Name="rolloverModifier"
UseInterpolation="False" FontSize="9" IsEnabled="True"
DrawVerticalLine="False" FontFamily="Arial,SimSun"
SnapsToDevicePixels="False"
ShowAxisLabels="False" />
<!--2020.3.1 upgrade to sciChart 6.0 this property is invalid =>TooltipLabelTemplate="{StaticResource RolloverLabelTemplate}" -->
<!--<sciChart:LegendModifier x:Name="legendModifier" GetLegendDataFor="AllSeries"/>-->
<!--<sciChart:RubberBandXyZoomModifier IsXAxisOnly="True"/>-->
<!--<sciChart:XAxisDragModifier/>-->
<!--<sciChart:YAxisDragModifier/>-->
<!--<sciChart:ZoomExtentsModifier ExecuteOn="MouseDoubleClick"/>-->
<!--双击自动显示全部视图-->
<!--<sciChart:ZoomPanModifier ExecuteOn="MouseLeftButton"/>-->
<!--
<sciChart:XAxisDragModifier x:Name="xAxisDragModifier" IsEnabled="True" ClipModeX="None"/>
<sciChart:YAxisDragModifier x:Name="yAxisRightDragmodifier" IsEnabled="True" YAxisId="DefaultAxisId"/>
-->
<sciChart:MouseWheelZoomModifier x:Name="mouseWheelZoomModifier" XyDirection="XDirection"/>
<!--滚轮滚动进行缩放操作-->
<!--
<sciChart:ZoomPanModifier ReceiveHandledEvents="True"></sciChart:ZoomPanModifier>
<sciChart:ZoomExtentsModifier ExecuteOn="MouseDoubleClick"/>
-->
</sciChart:ModifierGroup>
</sciChart:SciChartSurface.ChartModifier>
</sciChart:SciChartSurface>
<sciChart:SciChartLegend x:Name="legendControl" Visibility="Hidden"
Grid.Row="0" Margin="5,5" ShowVisibilityCheckboxes="True"
LegendData="{Binding LegendData, ElementName=legendModifier, Mode=OneWay}"
FontSize="10" FontWeight="Light" />
<!--<sciChart:SciChartOverview Grid.Row="1"
ParentSurface="{Binding ElementName=sciChart}"
SelectedRange="{Binding ElementName=sciChart, Path=XAxis.VisibleRange, Mode=TwoWay}"
sciChart:ThemeManager.Theme="BlackSteel" BorderThickness="0,1,0,0" />-->
<!-- Define a panel to display rollover results -->
<!--
<Border BorderBrush="#55000000" BorderThickness="2" Background="#77FFFFFF"
VerticalAlignment="Top" CornerRadius="5"
Margin="3,25,0,0" Padding="2" HorizontalAlignment="Left"
Visibility="{Binding IsRolloverInfoDisplayEnabled,Converter={StaticResource bool2VisibilityConverter}}">
<ItemsControl DataContext="{Binding ElementName=rolloverModifier}"
ItemsSource="{Binding SeriesData.SeriesInfo}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Height="13" Opacity="0.9">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="126"/>
<ColumnDefinition Width="110"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Background="{Binding SeriesColor, Converter={StaticResource ColorToBrushConverter}}" Text=" " Margin="0" Height="8" />
<TextBlock Grid.Column="1" Text="{Binding XValue,Converter={StaticResource rolloverDataTimeConverter}}" Margin="0" FontSize="9" FontFamily="Arial,SimSun" />
<TextBlock Grid.Column="2" Margin="0" FontSize="9" FontFamily="Arial,SimSun">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource rolloverDataValueConverter}">
<Binding Path="Value"/>
<Binding Path="RenderableSeries"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<TextBlock Grid.Column="3" Text="{Binding SeriesName}" Margin="0" FontSize="9" FontFamily="Arial,SimSun" HorizontalAlignment="Left"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
-->
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="82,0,0,0">
<!--<CheckBox Content="Display DataItems Panel" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="Black" IsChecked="True" Checked="checkConfigPanel_Checked" Unchecked="checkConfigPanel_Checked"/>-->
<CheckBox Content="Auto Zoom" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Black" IsChecked="True" x:Name="ckAutoZoom" Checked="checkAutoRange_Checked" Unchecked="checkAutoRange_Checked"/>
<!--
<CheckBox Content="X轴滚动缩放" HorizontalAlignment="Left" IsChecked="{Binding IsXZoomEnabled}"/>
<CheckBox Content="Y轴滚动缩放" HorizontalAlignment="Left" IsChecked="{Binding IsYZoomEnabled}" />
-->
<!--CheckBox Content="时间标尺 " HorizontalAlignment="Left" Name="checkTimeLine" Foreground="Black" VerticalAlignment="Center" Checked="checkTimeLine_Checked" Unchecked="checkTimeLine_Checked"/-->
<Label Content="{Binding ProcessInfo}" VerticalAlignment="Center" Height="25" Margin="28,0,0,0" HorizontalAlignment="Left" BorderThickness="0" Width="auto" FontSize="12" FontFamily="Arial,SimSun" />
</StackPanel>
<Label Content="▲" HorizontalAlignment="Right" Margin="0,0,2,0" Name="warpAxisTopUp" BorderThickness="1" BorderBrush="Green" Width="34" HorizontalContentAlignment="Center" Padding="0.5" FontSize="13" FontWeight="ExtraBold" Background="White" Foreground="Green" Height="20" VerticalAlignment="Top" MouseLeave="NumericAxis_Wrap_MouseLeave" MouseLeftButtonDown="YAxisTopUp_Click" Tag="2" Visibility="Collapsed" />
<Label BorderBrush="Red" BorderThickness="1" Content="▲" FontSize="13" FontWeight="ExtraBold" Height="20" HorizontalAlignment="Left" HorizontalContentAlignment="Center" Name="pyroAxisTopUp" Padding="0.5" VerticalAlignment="Top" Width="34" Background="White" Foreground="Red" ForceCursor="False" MouseLeave="NumericAxis_Pyro_MouseLeave" MouseLeftButtonDown="YAxisTopUp_Click" Tag="0" Visibility="Collapsed" Margin="1,0,0,0" />
<Label BorderBrush="Red" BorderThickness="1" Content="▼" FontSize="13" FontWeight="ExtraBold" HorizontalAlignment="Left" HorizontalContentAlignment="Center" Margin="1,19,0,0" Name="pyroAxisTopDown" Padding="0.5" Width="34" Background="White" Foreground="Red" Height="20" VerticalAlignment="Top" ForceCursor="False" ClipToBounds="True" MouseLeave="NumericAxis_Pyro_MouseLeave" MouseLeftButtonDown="YAxisTopDown_Click" Tag="0" Visibility="Collapsed" />
<Label BorderBrush="Green" BorderThickness="1" Content="▼" FontSize="13" FontWeight="ExtraBold" Height="20" HorizontalAlignment="Right" HorizontalContentAlignment="Center" Margin="0,19,2,0" Name="warpAxisTopDown" Padding="0.5" VerticalAlignment="Top" Width="34" Background="White" Foreground="Green" MouseLeave="NumericAxis_Wrap_MouseLeave" MouseLeftButtonDown="YAxisTopDown_Click" Tag="2" Visibility="Collapsed" />
<Label Background="White" BorderBrush="Green" BorderThickness="1" Content="▲" FontSize="13" FontWeight="ExtraBold" Foreground="Green" Height="20" HorizontalAlignment="Right" HorizontalContentAlignment="Center" Margin="0,0,2,42" Name="warpAxisBottomUp" Padding="0.5" VerticalAlignment="Bottom" Width="34" MouseLeave="NumericAxis_Wrap_MouseLeave" Tag="2" MouseLeftButtonDown="YAxisBottomUp_Click" Visibility="Collapsed" />
<Label Background="White" BorderBrush="Red" BorderThickness="1" Content="▲" FontSize="13" FontWeight="ExtraBold" Foreground="Red" Height="20" HorizontalAlignment="Left" HorizontalContentAlignment="Center" Margin="1,0,0,42" Name="pyroAxisBottomUp" Padding="0.5" VerticalAlignment="Bottom" Width="34" ForceCursor="False" MouseLeave="NumericAxis_Pyro_MouseLeave" Tag="0" MouseLeftButtonDown="YAxisBottomUp_Click" Visibility="Collapsed" />
<Label Background="White" BorderBrush="Red" BorderThickness="1" Content="▼" FontSize="13" FontWeight="ExtraBold" Foreground="Red" Height="20" HorizontalAlignment="Left" HorizontalContentAlignment="Center" Margin="1,0,0,23" Name="pyroAxisBottomDown" Padding="0.5" VerticalAlignment="Bottom" Width="34" ForceCursor="False" MouseLeave="NumericAxis_Pyro_MouseLeave" Tag="0" MouseLeftButtonDown="YAxisBottomDown_Click" Visibility="Collapsed" />
<Label Background="White" BorderBrush="Green" BorderThickness="1" Content="▼" FontSize="13" FontWeight="ExtraBold" Foreground="Green" HorizontalAlignment="Right" HorizontalContentAlignment="Center" Margin="0,0,2,23" Name="warpAxisBottomDown" Padding="0.5" Width="34" Height="20" VerticalAlignment="Bottom" MouseLeave="NumericAxis_Wrap_MouseLeave" Tag="2" MouseLeftButtonDown="YAxisBottomDown_Click" Visibility="Collapsed" />
<Label Background="White" BorderBrush="Blue" BorderThickness="1" Content="▲" FontSize="13" FontWeight="ExtraBold" Foreground="Blue" HorizontalAlignment="Right" HorizontalContentAlignment="Center" Margin="0,0,36,0" Name="ReflectAxisTopUp" Padding="0.5" Width="34" MouseLeave="NumericAxis_Reflect_MouseLeave" MouseLeftButtonDown="YAxisTopUp_Click" Tag="1" Visibility="Collapsed" Height="20" VerticalAlignment="Top" />
<Label Background="White" BorderBrush="Blue" BorderThickness="1" Content="▼" FontSize="13" FontWeight="ExtraBold" Foreground="Blue" Height="20" HorizontalAlignment="Right" HorizontalContentAlignment="Center" Margin="0,19,36,0" Name="ReflectAxisTopDown" Padding="0.5" VerticalAlignment="Top" Width="34" MouseLeave="NumericAxis_Reflect_MouseLeave" MouseLeftButtonDown="YAxisTopDown_Click" Tag="1" Visibility="Collapsed" />
<Label Background="White" BorderBrush="Blue" BorderThickness="1" Content="▲" FontSize="13" FontWeight="ExtraBold" Foreground="Blue" Height="20" HorizontalAlignment="Right" HorizontalContentAlignment="Center" Margin="0,0,36,42" Name="ReflectAxisBottomUp" Padding="0.5" VerticalAlignment="Bottom" Width="34" MouseLeave="NumericAxis_Reflect_MouseLeave" Tag="1" MouseLeftButtonDown="YAxisBottomUp_Click" Visibility="Collapsed" />
<Label Background="White" BorderBrush="Blue" BorderThickness="1" Content="▼" FontSize="13" FontWeight="ExtraBold" Foreground="Blue" Height="20" HorizontalAlignment="Right" HorizontalContentAlignment="Center" Margin="0,0,36,23" Name="ReflectAxisBottomDown" Padding="0.5" VerticalAlignment="Bottom" Width="34" MouseLeave="NumericAxis_Reflect_MouseLeave" Tag="1" MouseLeftButtonDown="YAxisBottomDown_Click" Visibility="Collapsed" />
</Grid>
</Grid>
</UserControl>