You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Xamarin Form的HTML源中用JSON填充amCharts图表的方法

解决Xamarin Forms中amCharts无法注入自定义JSON数据的问题

问题根源

原代码存在两个关键错误:

  • HTML字符串中的引号转义重复,导致JS里的元素ID、配置字段名变成无效的双引号包裹字符串(比如""chartdiv"")
  • 自定义JSON数据未正确转义,无法被JS解析为合法的数组元素

修正步骤

  1. 修复引号转义:将所有""xxx""替换为"xxx"(或在C#逐字字符串中用""替代单个双引号),确保JS能识别正确的ID和配置项。
  2. 正确注入JSON数据:在C#的逐字字符串(@开头)中,JSON的双引号需要用两个双引号转义,直接将JSON数据作为数组元素插入data变量。

修正后的完整代码

htmlSource.Html = @"<html><head><style>#chartdiv {width: 100%;height: 500px;}</style></head><body><div id=""chartdiv""></div> </body><!-- Resources --><script src=""https://cdn.amcharts.com/lib/5/index.js""></script><script src=""https://cdn.amcharts.com/lib/5/xy.js""></script><script src=""https://cdn.amcharts.com/lib/5/themes/Animated.js""></script><!-- Chart code --><script>am5.ready(function() {var root = am5.Root.new(""chartdiv"");root.setThemes([ am5themes_Animated.new(root) ]);var chart = root.container.children.push(am5xy.XYChart.new(root, {panX: true,panY: true,wheelX: ""panX"",wheelY: ""zoomX"",pinchZoomX:true}));var cursor = chart.set(""cursor"", am5xy.XYCursor.new(root, {}));cursor.lineY.set(""visible"", false);var xRenderer = am5xy.AxisRendererX.new(root, { minGridDistance: 30 });xRenderer.labels.template.setAll({rotation: -90,centerY: am5.p50,centerX: am5.p100,paddingRight: 15});var xAxis = chart.xAxes.push(am5xy.CategoryAxis.new(root, {maxDeviation: 0.3,categoryField: ""country"",renderer: xRenderer, tooltip: am5.Tooltip.new(root, {})}));var yAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, {maxDeviation: 0.3,renderer: am5xy.AxisRendererY.new(root, {})}));var series = chart.series.push(am5xy.ColumnSeries.new(root, {name: ""Series 1"",xAxis: xAxis,yAxis: yAxis,valueYField: ""value"", sequencedInterpolation: true, categoryXField: ""country"", tooltip: am5.Tooltip.new(root, { labelText:""{valueY}""  })}));series.columns.template.setAll({ cornerRadiusTL: 5, cornerRadiusTR: 5 });series.columns.template.adapters.add(""fill"", function(fill, target) {return chart.get(""colors"").getIndex(series.columns.indexOf(target));});series.columns.template.adapters.add(""stroke"", function(stroke, target) { return chart.get(""colors"").getIndex(series.columns.indexOf(target));});// Set datavar data = [{""country"":""31/08/2565"",""value"":42}];xAxis.data.setAll(data);series.data.setAll(data);series.appear(1000);chart.appear(1000, 100); }); // end am5.ready()</script></html>";

关键说明

  • C#逐字字符串中,用""表示单个双引号,确保最终输出到HTML的JS代码中引号格式合法。
  • 自定义JSON数据直接以数组元素形式写入data变量,完全符合JS语法要求,amCharts可正常解析。

内容的提问来源于stack exchange,提问作者A. WHY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:10:15