我一直試圖讓Windows Phone中/ C#編程開始,之後更新LongListSelector問題開始是應該去拉一些數據庫的數據從我的服務器,並相應地顯示一切一個小項目在我的手機上。我一直在使用Channel 9指南和Google/StackOverflow作爲指導,迄今爲止效果很好,但現在我遇到了一個我無法完全理解並需要幫助的問題。與重新分配源頭上反序列化JSON集合
我有一個應該是有點像MainViewModelClass,看起來像這樣一類PlanModel:
public class PlanModel
{
public PlanModel()
{
Items = new ObservableCollection<PlanData>();
}
public ObservableCollection<PlanData> Items { get; set; }
public bool IsDataLoaded { get; set; }
public void LoadData()
{
LoadPlanData();
IsDataLoaded = true;
}
public async Task LoadPlanData()
{
// URL censored, the JSON is deserialized correctly, checked with debug
Uri ApiAddress = new Uri("http://example.com");
WebClient Client = new WebClient();
Client.DownloadStringCompleted += Client_DownloadStringCompleted;
Client.DownloadStringAsync(ApiAddress);
}
void Client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
string ApiResult;
if (e.Error == null)
{
ApiResult = e.Result;
Items = JsonConvert.DeserializeObject<ObservableCollection<PlanData>>(ApiResult);
}
}
}
我App.xaml.cs被鏈接並工作正常,我只是修改了存在的版本當你創建一個新的項目。我認爲,我必須沿着這些線路不知何故什麼實現INotifyChanged屬性,但我嘗試了十幾個組合(名單,與OnCollectionChanged和OnPropertyChanged ObservableCollections)並沒有什麼實際運行時加載的異步數據更新時,我的主要頁面視圖。
我真的很感激,如果有人可以給我一個例子就如何正確地使視圖更新一個小的解釋 - 在此先感謝!
Web客戶端似乎並不爲一次性的了 - 我已經嘗試實現這一點,但沒有奏效。 ,因爲Web客戶端不能轉換爲IDisposable的含蓄,智能感知,也沒有表現出處置,所以無論是我有一個非常愚蠢的錯誤的地方,或者不能再配置。 但除此之外,感謝您的幫助!您幫助我終於理解了這些更新的處理程序。 –
WebClient是一次性花花公子。它必須被賦予它的操作 – John
在[這個線程](http://stackoverflow.com/questions/4444 851/should-webclient-instances-be-reused-in-silverlight)在第二個答案的評論部分中討論了這個問題。我正在爲WinPhone 8編譯它。使用聲明只是給我一個錯誤,因爲它不是一次性的。 –