我想编写可以动态添加新随机值系列到 Silverlight StackedAreaChart 的代码。也就是说,每次用户在运行时单击按钮时,我都希望将不同颜色的新值系列添加到程序主 StackedAreaChart 中。
除了Silverlight 可视化演示(堆叠区域示例)之外,我在 Internet 上找不到任何好的示例。
程序员使用三个预定义系列使其成为静态,但我希望它是动态的并且无法弄清楚:-/
我现在花了 2 周时间,任何帮助都将不胜感激,因为我对这些东西不熟悉 :(
谢谢大家!:)
我想编写可以动态添加新随机值系列到 Silverlight StackedAreaChart 的代码。也就是说,每次用户在运行时单击按钮时,我都希望将不同颜色的新值系列添加到程序主 StackedAreaChart 中。
除了Silverlight 可视化演示(堆叠区域示例)之外,我在 Internet 上找不到任何好的示例。
程序员使用三个预定义系列使其成为静态,但我希望它是动态的并且无法弄清楚:-/
我现在花了 2 周时间,任何帮助都将不胜感激,因为我对这些东西不熟悉 :(
谢谢大家!:)
最后我有时间创建一个动态随机序列的例子。
XAML 代码很简单:一个按钮和图表。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button Content="Add random series" Click="AddSeries_Click" HorizontalAlignment="Center" />
<chart:Chart x:Name="chart" Grid.Row="1">
<chart:StackedAreaSeries />
</chart:Chart>
</Grid>
代码隐藏看起来相当复杂,但大部分代码用于生成随机数据。主要代码在AddSeries_Click方法中。
public partial class MainPage : UserControl
{
private string[] categories = new[] { "Apples", "Oranges", "Bananas", "Lemons" };
private Random random = new Random((int)DateTime.Now.Ticks);
private int lastSeriesYear = 2011;
public MainPage()
{
InitializeComponent();
}
public class ChartItem
{
public string Title { get; set; }
public double Value { get; set; }
}
private void AddSeries_Click(object sender, RoutedEventArgs e)
{
var sd = new SeriesDefinition();
sd.ItemsSource = categories.Select(c => new ChartItem { Title = c, Value = random.Next(30, 35) }).ToList();
sd.Title = (lastSeriesYear--).ToString();
sd.IndependentValuePath = "Title";
sd.DependentValuePath = "Value";
((StackedAreaSeries)this.chart.Series[0]).SeriesDefinitions.Add(sd);
}
}
如果您更喜欢使用视图模型和可观察集合而不是代码隐藏,我有扩展图表类,它允许数据绑定到系列列表。但是它需要更多的代码,所以让这个例子带有代码隐藏。