C# Visifire图表回调
我想知道在visifire图表渲染完成时是否有方法获得回调。我一直在尝试创建一个图表并将其保存到图像中。这在按下按钮时有效,但如果我不按下按钮,则不起作用。我猜是因为图表没有加载完毕,但我不太确定。加载页面时,我设置XAML中使用的ObservableCollection值 我基本上有几个数据系列,如下所示:C# Visifire图表回调,c#,.net,prism,visifire,C#,.net,Prism,Visifire,我想知道在visifire图表渲染完成时是否有方法获得回调。我一直在尝试创建一个图表并将其保存到图像中。这在按下按钮时有效,但如果我不按下按钮,则不起作用。我猜是因为图表没有加载完毕,但我不太确定。加载页面时,我设置XAML中使用的ObservableCollection值 我基本上有几个数据系列,如下所示: <vc:Chart.Series> <vc:DataSeries RenderAs="StackedColumn" LegendText="Por
<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()来设置observablecollection值,然后调用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图表加载后,是否有一种方法可以被调用,或者我是否缺少另一种解决方案。谢谢。水晶
如果使用Silverlight,则只能通过用户操作(如按按钮)保存图像,但如果使用WPF,则图表完全呈现后即可保存。但是,如果希望在集合填充后立即保存图表,则可以在延迟一段时间后执行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);
}