我有一個使用telerik圖表的silverlight應用程序。如何正確使用異步服務使用silverlight和telerik圖表處理數據
在我看來,我有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調用有關嗎?
您對綁定正確無誤。謝謝。我確實曾經在XAML中使用過它,但拼錯了綁定名稱。我沒有遇到任何關於該服務的問題,但是如果我願意,我會記住你的答案。 – dtc 2012-03-15 23:46:36