|
<chart:SfChart x:Name="chart" Height="300" VerticalAlignment="Top"
PointerPressed="chart_PointerPressed" PointerMoved="chart_PointerMoved"
PointerReleased="chart_PointerReleased">
<chart:SfChart.Annotations>
<chart:RectangleAnnotation HorizontalAlignment="Right" Fill="Transparent" x:Name="rectangle" />
</chart:SfChart.Annotations>
<chart:SfChart.PrimaryAxis>
<chart:DateTimeAxis x:Name="xAxis" LabelFormat="dd/MMM hh:mm"/>
</chart:SfChart.PrimaryAxis>
<chart:SfChart.SecondaryAxis>
<chart:NumericalAxis x:Name="yAxis"/>
</chart:SfChart.SecondaryAxis>
<local:LineSeriesExt XBindingPath="XValue" YBindingPath="YValue" Interior="Red" ItemsSource="{Binding Data}"/>
</chart:SfChart> |
|
private void chart_PointerReleased(object sender, PointerRoutedEventArgs e)
{
rectangle.Visibility = Visibility.Collapsed;
if (isDrag)
{
xRange = new DoubleRange((double)rectangle.X1, (double)rectangle.X2);
yRange = new DoubleRange((double)rectangle.Y1, (double)rectangle.Y2);
foreach (LineSeriesExt series in chart.Series)
{
foreach (Syncfusion.UI.Xaml.Charts.LineSegment segment in series.ChartSegments)
{
var segmentXRange = segment.XRange;
var segmentYRange = segment.YRange;
if (series.ChartSelectedSegments.Count > 0 && series.ChartSelectedSegments.Contains(segment))
{
(segment.GetRenderedVisual() as Line).Stroke = segment.Interior;
series.ChartSelectedSegments.Remove(segment);
}
else if (xRange.Inside(segmentXRange) && yRange.Inside(segmentYRange))
{
(segment.GetRenderedVisual() as Line).Stroke = new SolidColorBrush(Colors.Green);
series.ChartSelectedSegments.Add(segment);
}
}
}
}
isDrag = false;
} |
|
//First chart
<chart:SfChart x:Name="chart" Grid.Row="1"
PointerPressed="chart_PointerPressed" PointerMoved="chart_PointerMoved"
PointerReleased="chart_PointerReleased">
..
<local:LineSeriesExt XBindingPath="XValue" YBindingPath="YValue" Interior="Red" ItemsSource="{Binding Data}"/>
</chart:SfChart >
//Second chart
<chart:SfChart x:Name="chart1" Grid.Row="2" >
<chart:SfChart.PrimaryAxis>
<chart:DateTimeAxis LabelFormat="dd/MMM hh:mm"/>
</chart:SfChart.PrimaryAxis>
<chart:SfChart.SecondaryAxis>
<chart:NumericalAxis />
</chart:SfChart.SecondaryAxis>
<chart:LineSeries XBindingPath="XValue" YBindingPath="YValue" x:Name="series1"/>
</chart:SfChart> |
|
ObservableCollection<Model> selectedData;
private void chart_PointerReleased(object sender, PointerRoutedEventArgs e)
{
rectangle.Visibility = Visibility.Collapsed;
if (isDrag)
{
..
}
foreach (var selectedSegment in series.ChartSelectedSegments)
{
var segmentXRange = selectedSegment.XRange;
var segmentYRange = selectedSegment.YRange;
selectedData.Add(new Model(segmentXRange.Start.FromOADate(), segmentYRange.Start));
}
double xEnd = series.ChartSelectedSegments[series.ChartSelectedSegments.Count - 1].XRange.End;
double yEnd = series.ChartSelectedSegments[series.ChartSelectedSegments.Count - 1].YRange.End;
selectedData.Add(new Model(xEnd.FromOADate(), yEnd));
series1.ItemsSource = selectedData;
}
}
isDrag = false;
} |