C# Visifire图表回调

C# Visifire图表回调,c#,.net,prism,visifire,C#,.net,Prism,Visifire,我想知道在visifire图表渲染完成时是否有方法获得回调。我一直在尝试创建一个图表并将其保存到图像中。这在按下按钮时有效,但如果我不按下按钮,则不起作用。我猜是因为图表没有加载完毕,但我不太确定。加载页面时,我设置XAML中使用的ObservableCollection值 我基本上有几个数据系列,如下所示: <vc:Chart.Series> <vc:DataSeries RenderAs="StackedColumn" LegendText="Por

我想知道在visifire图表渲染完成时是否有方法获得回调。我一直在尝试创建一个图表并将其保存到图像中。这在按下按钮时有效,但如果我不按下按钮,则不起作用。我猜是因为图表没有加载完毕,但我不太确定。加载页面时,我设置XAML中使用的ObservableCollection值

我基本上有几个数据系列,如下所示:

<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);
}