我想知道是否有一种方法可以在visifire图表渲染完成时获得回调。我一直在尝试创建一个图表并将其保存为图像。这在按下按钮时有效,但如果我没有按下按钮,则不起作用。我猜是因为图表还没有加载完,但我不是很确定。当页面加载时,我设置了在我的ObservableCollection中使用的XAML值。
我基本上有几个数据系列,看起来像这样:
<vc:Chart.Series>
<vc:DataSeries RenderAs="StackedColumn" LegendText="Portion sequenced" LightingEnabled="False" AxisYType="Primary" Color="#4198AF" DataSource="{Binding SequencedValues}">
<vc:DataSeries.DataMappings>
<vc:DataMapping MemberName="AxisXLabel" Path="Key"></vc:DataMapping>
<vc:DataMapping MemberName="YValue" Path="Value"></vc:DataMapping>
</vc:DataSeries.DataMappings>这些数据由ObservableCollection填充。因此,我首先调用我的方法DrawImage()来设置可观察到的收集值,然后调用Save()。正如我所说的,Save()方法在按下按钮时会自动工作,但如果我在绘制图像后调用它,则不会。我认为它最初与页面尚未完成加载有关。但是使用
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding PageLoadCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>我只在页面加载时调用DrawImage()和Save()。我甚至尝试在DrawImage()和Save()之间设置一个睡眠计时器5秒,看看是否有计时问题,我仍然只得到我的背景图像,但我的DataSeries没有。
所以我的问题是,是否有一种方法可以在Visifire图表加载后被回调,或者是否有其他我缺少的解决方案。谢谢。
发布于 2013-01-16 17:49:00
克里斯托,
如果您使用的是Silveright,则只能通过用户操作保存图像,如按下按钮;但如果您使用的是WPF,则Chart可以在图表完全呈现后立即保存。但是,如果您希望在填充集合后立即保存Chart,则可以在一段延迟后执行Save()方法(使用计时器)。请检查下面的代码。
MyChart.Series[0].DataSource = collection; //Populate Data
timer.Tick += new EventHandler(timer_Tick);
timer.Interval = new TimeSpan(0, 0, 0, 0, 3000);// give some delay
timer.Start();
void timer_Tick1(object sender, EventArgs e)
{
ExportToImage(new Uri("d:/visifire1.png"), MyChart);
}https://stackoverflow.com/questions/14344776
复制相似问题