using SciChart.Charting.Model.DataSeries;
using SciChart.Examples.ExternalDependencies.Data;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
namespace SciChart_BindSciCharttoData.RetryBandSeries
{
///
/// Interaction logic for RetryBandSeries.xaml
///
public partial class RetryBandSeries : UserControl
{
public RetryBandSeries()
{
InitializeComponent();
this.Loaded += RetryBandSeries_Loaded;
}
private void RetryBandSeries_Loaded(object sender, RoutedEventArgs e)
{
InitBandSeries();
}
private void InitBandSeries()
{
var times = new double[20];
var dataSource = new RandomWalkGenerator();
var ydatas = new List();
var y1datas = new List();
for (int i = 0; i < 20; i++)
{
times[i] = i;
ydatas.Add(dataSource.GetRandomDouble());
y1datas.Add(dataSource.GetRandomDouble());
}
var metaData = GetMetaDatas(ydatas, y1datas);
var seriesData = new XyyDataSeries();
seriesData.Append(times, ydatas, y1datas, metaData);
MyBandSeries.PaletteProvider = new MyCustomPalette();
MyBandSeries.DataSeries = seriesData;
}
private List GetMetaDatas(List y0Vlues, List y1Values)
{
List returnDatas = new List();
for (int i = 0; i < y0Vlues.Count; i++)
{
if (i == 0)
{
returnDatas.Add(new MyCustomPointMetaData(y0Vlues[i], y1Values[i], 0, 0));
}
else
{
returnDatas.Add(new MyCustomPointMetaData(y0Vlues[i], y1Values[i], y0Vlues[i - 1], y1Values[i - 1]));
}
}
return returnDatas;
}
}
}
public class MyCustomPointMetaData : IPointMetadata
{
public event PropertyChangedEventHandler PropertyChanged;
public bool IsSelected { get; set; }
public double Y0 { get; set; }
public double Y1 { get; set; }
public double Py0 { get; set; }
public double Py1 { get; set; }
public MyCustomPointMetaData(double y0, double y1, double py0, double py1)
{
this.Y0 = y0;
this.Y1 = y1;
this.Py0 = py0;
this.Py1 = py1;
}
}
using SciChart.Charting.Model.DataSeries;
using SciChart.Charting.Visuals.PaletteProviders;
using SciChart.Charting.Visuals.RenderableSeries;
using System.Windows.Media;
namespace SciChart_BindSciCharttoData.RetryBandSeries
{
public class MyCustomPalette : IFillPaletteProvider, IStrokePaletteProvider
{
public void OnBeginSeriesDraw(IRenderableSeries rSeries)
{
}
public Color? OverrideStrokeColor(IRenderableSeries rSeries, int index, IPointMetadata metadata)
{
return null;
}
public Brush OverrideFillBrush(IRenderableSeries rSeries, int index, IPointMetadata metadata)
{
var data = metadata as MyCustomPointMetaData;
if (data != null)
{
if (data.Y0 > data.Y1)
{
return new SolidColorBrush(Colors.OrangeRed);
}
else
{
return new SolidColorBrush(Colors.SeaGreen);
}
}
return null;
}
}
}