【问题标题】:Can't clear Silverlight Charting toolkit axes by code无法通过代码清除 Silverlight Charting 工具包轴
【发布时间】:2011-08-06 02:34:49
【问题描述】:

我正在尝试创建一个 Silverlight 图表(Windows phone 7),用户可以通过更改某些设置来修改它。

在清除图表轴并读取新轴后,我最终会得到 chart.ActualAxes.Count 报告的双轴

有谁知道如何完全清除和删除 silverlight 图表上的所有轴并添加新轴?添加后我是否打算调用一些东西来更新 ActualAxes 列表?

提前致谢

代码示例(调用两次,您的图表将以 4 个轴而不是两个轴结束):

chart.Axes.Clear();

chart.Axes.Add(new LinearAxis()
{
    Orientation = AxisOrientation.Y,
    Location = AxisLocation.Left,
    Minimum = 0
});
chart.Axes.Add(new DateTimeAxis()
{
    Orientation = AxisOrientation.X,
    Location = AxisLocation.Bottom,
    IntervalType = DateTimeIntervalType.Days
});

【问题讨论】:

    标签: c# silverlight charts silverlight-toolkit


    【解决方案1】:

    Chart Axes 集合表示图表中的persistentAxes,即使图表中没有序列也将被渲染。 ActualAxes 表示持久轴和图表中系列使用的轴的组合。

    当您清除集合并测试 ActualAxes.Count 时,您会发现它仍然显示为 2,即使 Axes 现在为 0。ActualAxesSeriesHostAxesCollection 的实例)将不允许删除轴正在使用是现有的系列。因此,ActualAxes 集合保留了原件。然后,您将另外 2 个添加到持久的 Axes 集合中,因此这 2 个新的也添加到 ActualAxes,您最终得到 4 个。

    再次运行您的代码(第三次),您应该会看到 ActualAxes 计数仍为 4。那是因为您在第二次调用中添加的 2 轴未被任何系列使用,因此它们可以从ActualAxes收藏。

    【讨论】:

    • 这很好,但我如何断开它与图表的连接,以便我可以用不同类型替换轴? (因为我假设它是在运行时自动分配的)
    • @Doug:我问你的问题是你为什么要更换 Axes?为什么不直接修改现有 Axes 的属性?
    • 因为我想通过在 CategoryAxis 和 DateTimeAxis 之间切换来更改它们的类型
    【解决方案2】:

    以下代码应该可以工作

    var xAxis = chart_name.ActualAxes.OfType<LinearAxis>().FirstOrDefault(ax => ax.Orientation == AxisOrientation.X);
    if (xAxis != null) 
    {
       xAxis.Title = "The Title";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多