После неудачной попытки найти ответ на мою проблему с оригинальным WPF Toolkit, я решил отредактировать исходный код набора инструментов Charting. Вот изменения, которые я сделал, чтобы заставить его работать:
(Показывает изменения исходного кода, чтобы увидеть исходный код, посмотрите исходное сообщение перед редактированием)
- Получить источник. Я использую VS2010 и так как некоторые из компонентов
из WPF Toolkit стали частью .NET4, мне пришлось модифицировать WPF
Инструментарий решения. К счастью, эта работа для ног уже была сделана для меня.
Получить источник здесь
Изменить LineSeries.cs: 115 на
if (axis == null)
{
axis = new CategoryAxis();
}
Изменить LineAreaBaseSeries.cs: 243 на
double x = ActualIndependentAxis.GetPlotAreaCoordinate(dataPoint.ActualIndependentValue).Value;
double y = this.InternalActualDependentAxis.GetPlotAreaCoordinate(dataPoint.ActualDependentValue).Value;
if (ValueHelper.CanGraph(x) && ValueHelper.CanGraph(y))
{
dataPoint.Visibility = Visibility.Visible;
double coordinateY = Math.Round(y - (dataPoint.ActualHeight / 2));
Canvas.SetTop(dataPoint, coordinateY);
double coordinateX = Math.Round(x - (dataPoint.ActualWidth / 2));
Canvas.SetLeft(dataPoint, coordinateX);
}
else
{
dataPoint.Visibility = Visibility.Collapsed;
}
Изменить LineAreaBaseSeries.cs: 298 на
Func<DataPoint, Point> createPoint =
dataPoint =>
new Point(
ActualIndependentAxis.GetPlotAreaCoordinate(dataPoint.ActualIndependentValue).Value,
this.InternalActualDependentAxis.GetPlotAreaCoordinate(dataPoint.ActualDependentValue).Value);
IEnumerable<Point> points = Enumerable.Empty<Point>();
if (ActualIndependentAxis is IRangeAxis)
{
points = DataPointsByIndependentValue.Select(createPoint);
}
else
{
points =
ActiveDataPoints
.Select(createPoint)
.OrderBy(point => point.X);
}
После этих изменений вы можете использовать зависимый источник строк.
Ура!