У меня есть приложение silverlight, использующее Telerik Charts.
На мой взгляд, у меня есть диаграмма в xaml. В коде позади представления у меня есть что-то вроде этого:
public partial class MyView : UserControl
{
private MyViewModel viewModel;
public MyView()
{
InitializeComponent();
CreateChartMappings(); // Creates the SeriesMappings for my chart
viewModel = new MyViewModel();
Chart1.ItemsSource = viewModel.MyChartData;
DataContext = viewModel;
Resources.Add("ViewModel", viewModel);
}
}
В моей ViewModel у меня есть это:
public class MyViewModel : INotifyPropertyChanged
{
private ObservableCollection<ChartData> myChartData;
public ObservableCollection<ChartData> MyChartData
{
get { return myChartData; }
set { myChartData= value; OnPropertyChanged("MyChartData"); }
}
public MyViewModel()
{
MyWebServiceClient service = MyWebServiceClient.CreateInstance();
service.GetChartDataCompleted +=
new EventHandler<GetChartDataCompletedEventArgs>(GetChartDataCallback);
service.GetChartDataAsync();
}
private void GetChartDataCallback(object sender, GetChartDataCompletedEventArgs e)
{
if (e.Error == null)
{
MyChartData = e.Result;
}
}
}
Я точно знаю, что GetChartData вернет правильно введенные данные, которые могут быть использованы для диаграммы, и вижу, что GetChartDataCallback возвращает результаты в e.Result, но я не знаю, как загрузить эти данные в мою диаграмму.
Если я сделаю что-то вроде Chart1.ItemsSource = viewModel.MyChartData; после того, как я уверен, что служба возвращает данные, данные хорошо загружаются в график. Например, если я создаю в своем представлении кнопку, которая вызывает эту строку кода, она загрузит данные из службы в диаграмму.
Также, если я заменю вызовы asyc обычным вызовом метода, он также будет работать нормально, поэтому моя проблема может быть связана с неправильной обработкой вызова asyc?