2013-01-15 58 views
0

我想知道在Visifire圖表完成渲染時是否有方法獲得回調。我一直在試圖創建一個圖表並保存圖像。這與按鈕按下,但不工作,如果我沒有按鈕。我的猜測是因爲圖表沒有完成加載,但我不太確定。當頁面加載時,我設置了我的XAML中使用的ObservableCollection值。Visifire圖表回調

我基本上有幾個數據系列,看起來像這樣:

<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圖表加載後回調,或者如果有另一個解決方案我錯過了。謝謝。

回答

1

水晶,

如果您正在使用Silveright工作,那麼你只能通過用戶操作,如按下按鈕保存圖像,但如果你用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); 
}