我已经阅读了有关让SciChart在支持论坛上将图表渲染到内存的指南。但是,该示例使用FastLineRenderableSeries
,而在我的项目中,我使用IRenderableSeriesViewModel
在XAML中使用ObservableCollection<IRenderableSeriesViewModel>
进行系列绑定。{/ p>
当我尝试按照SciChart Knowledgebase上的指南操作时,FastLineRenderableSeries
使用RenderableSeries
作为ObservableCollection<IRenderableSeriesViewModel>
,当我尝试分配预先存在的{{1}时,它不起作用} RenderableSeries
下的SciChartSurface
属性。
我想知道当我尝试将现有的绘图导出到位图内存时,是否可以只使用现有的ObservableCollection<IRenderableSeriesViewModel>
。我可以从DataSeries
再次提取IRenderableSeriesViewModel
,但如果有更快的方法可以做到这一点,那就太棒了。
谢谢。
编辑:我正在尝试以这种方式进行导出,如知识库中所示。
我的ViewModel目前有这个:
private ObservableCollection<IRenderableSeriesViewModel> seriesViewModels =
new ObservableCollection<IRenderableSeriesViewModel>();
public ObservableCollection<IRenderableSeriesViewModel> SeriesViewModels
{
get
{
return this.seriesViewModels;
}
}
正如知识库中所见,
var series = new FastLineRenderableSeries()
{
SeriesColor = Colors.Red,
DataSeries = GetDataSeries()
};
var surface = new SciChartSurface()
{
ChartTitle = "Rendered In Memory",
XAxes = xAxes,
YAxes = yAxes,
// Here, if I try to use "RenderableSeries = seriesViewModels" it doesn't work.
RenderableSeries = new ObservableCollection() { series }
};
surface.Width = 1000;
surface.Height = 1000;
// Export to bitmap
var bitmapSource = surface.ExportToBitmapSource();
Visual Studio将显示以下错误消息:
无法隐式转换类型无法隐式转换类型&gt; System.Collections.ObjectModel.ObservableCollection
<SciChart.Charting.Model.ChartSeries.IRenderableSeriesViewModel>
到System.Collections.ObjectModel.ObservableCollection<SciChart.Charting.Visuals.RenderableSeries.IRenderableSeries>
您对IRenderableSeries
和IRenderableSeriesViewModel
答案 0 :(得分:1)
根据文件:
要在ObservableCollection<IRenderableSeries>
和<!-- Declare a SciChartSurface with SeriesBinding -->
<!-- Where xmlns:s="http://schemas.abtsoftware.co.uk/scichart -->
<s:SciChartSurface RenderableSeries="{s:SeriesBinding RenderableSeriesViewModels}">
<!-- XAxis, YAxis omitted for brevity -->
</s:SciChartSurface>
类型var surface = new SciChartSurface()
{
ChartTitle = "Rendered In Memory",
XAxes = xAxes,
YAxes = yAxes,
RenderableSeries = new RenderableSeriesSourceCollection(seriesViewModels);
};
之间进行映射,您需要使用SciChartSurface.RenderableSeries标记扩展。
通常,这在XAML中应用如下:
string str = "{"Id":["1799"],"Type":1,"Date":null,"Group":null,"Ids":1799}";
因此,问题变成了SeriesBinding&#39;,从外观来看这是相当困难的。
最好在XAML中创建或设置SciChartSurface并使用How to apply a MarkupExtension in code behind并将其应用于图表。
编辑:更新
实际上,我可能会为您提供解决方案。 SciChart有类this.FindResource() to get your style和RenderableSeriesConverter。这样的事情可能有用:
dynamic parsedJson = JsonConvert.DeserializeObject<dynamic>(str);
Dynamic newStr = new ExpandoObject();
newStr.Id = parsedJson.Id.ToString();
newStr.Type = parsedJson.Type;
...
白茶!!