Обратный вызов диаграммы 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 () только когда страница загружена. Я даже пытался установить таймер сна на 5 секунд между DrawImage() и Save (), просто чтобы посмотреть, была ли проблема с синхронизацией, и я все еще получаю только свое фоновое изображение, но ничего с моими DataSeries.
Поэтому мой вопрос: есть ли способ перезвонить после загрузки диаграммы Visifire, или есть другое решение, которое мне не хватает. Благодарю.
1 ответ
Кристалл,
Если вы работаете с 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);
}