Telerik チャートを使用する Silverlight アプリケーションがあります。
私の見解では、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 呼び出しを正しく処理していないことに問題がある可能性があります。