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

相关内容

  • 没有找到相关文章

最新更新