为Live Charts系列指定DataTemplate

时间:2016-08-05 15:50:46

标签: c# wpf mvvm livecharts

我正在寻找使用实时图表构建最佳拟合线的散点图。

现在,我这样做的方法是在主视图模型上设置SeriesCollection,在此界面的类中我手动添加BubbleSeries和{{ 1}}用于图表:

LineSeries

PointAnalysisViewModel:

public interface IPointAnalysisViewModel : IAnalysisViewModel
{
    SeriesCollection Series
    {
        get;
    }
}

然后,此系列在xaml中绑定到foreach (var pointSliceViewModel in this.slices) { this.series.Add(pointSliceViewModel.Series); } this.bestFitLineSeries = this.BuildBestFitLine(pointAnalysisModel.BestFitValues); this.series.Add(this.bestFitLineSeries); 的{​​{1}},如下所示:

Series

非常基本的,但是这意味着在我的ViewModel系列中,我知道该视图会为我显示一个气泡系列,如下所示:

CartesianChart

对我而言,这看起来非常像一些代码'气味'因为我需要知道在View模型中查看特定对象。

我能想到的唯一可以让我分离View和ViewModel问题的方法是,如果我能够为<wpf:CartesianChart Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Series="{Binding Path=Series}" > ... UI Fluff </wpf:CartesianChart> 提供public interface IPointSliceViewModel : IViewModel { IBubbleSeriesView Series { get; } bool Show { get; set; } } 的数据模板并绑定将CartesianChart改为Series的集合,如下所示:

Series

这只会让我拥有:

IPointSliceViewModels

<wpf:CartesianChart Grid.Column="1"
                    HorizontalAlignment="Stretch"
                    VerticalAlignment="Stretch"
                    SeriesSource="{Binding Path=Series}">
    <wpf:CartesianChart.SeriesTemplates>
        <DataTemplate DataType={x:Type local:PointSliceViewModel}>
            <wpf:BubbleSeries .../>
        </DataTemplate>
    </wpf:CartesianChart.SeriesTemplates>
... UI Fluff
</wpf:CartesianChart>

目前是否可以为public interface IPointAnalysisViewModel : IAnalysisViewModel { ObservableCollection<IPointSliceViewModel> Series { get; } } 提供public interface IPointSliceViewModel : IViewModel { ChartValues<ObservablePoint> Values { get; } bool Show { get; set; } } ,还是我必须在后面的代码中手动执行此操作?

或者是否有一种不同的方式在图表中拥有可能无限数量的系列,而无需在视图中定义每个系列而无需跟踪VM中的视图特定细节?

0 个答案:

没有答案