おそらくNoobの質問。マップにサロンの画鋲が表示されているmvmwp7アプリを開発しています。データベースはリンクから取得されます。
私が苦労している問題は、監視可能なコレクションデータがApp._ViewModelからロードされていないことです(jsonシリアライザーがデータベースを解析して正常に動作します)。デバッグ時に、アプリはプレーンマップを表示します。データベースから文字列属性を返すと、そのコードが中断されます。文字列を表示するためにメッセージボックスも試しましたが、それでもクラッシュします。
コードは次のとおりです。
mainviewmodel.cs
public class MainViewModel {
public bool IsDataLoaded {get; プライベートセット; }public ObservableCollection<SalonViewModel> SalonCollection { get; private set; } public MainViewModel() { IsDataLoaded = false; } public ObservableCollection<SalonViewModel> LoadData() { SalonCollection = new ObservableCollection<SalonViewModel>(); var wednesday = new Uri("http://blehbleh.txt"); WebClient wc = new WebClient(); wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted); wc.OpenReadAsync(wednesday); return SalonCollection; } public void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { try { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ObservableCollection<SalonViewModel>)); ObservableCollection<SalonViewModel> list = serializer.ReadObject(e.Result) as ObservableCollection<SalonViewModel>; foreach (SalonViewModel b in list) { SalonCollection.Add(new SalonViewModel { sid=b.sid,sname=b.sname,sgeo_lat=b.sgeo_lat,sgeo_lon=b.sgeo_lon, } this.IsDataLoaded = true; } catch (Exception ex) { //throw ex; MessageBox.Show(ex.Message); } }
App.cs
パブリック部分クラスアプリ:アプリケーション{
private static MainViewModel viewModel; public static MainViewModel _viewModel { get { if (viewModel == null) { viewModel = new MainViewModel(); } return viewModel; } } void LoadData() { if (!_viewModel.IsDataLoaded) { _viewModel.LoadData(); } }
等
これがmappage.csです
private voidsalon_map_Loaded(オブジェクト送信者、RoutedEventArgs e){
foreach (SalonViewModel Salon in App._viewModel.LoadData) { MessageBox.Show(Salon.sname); Pushpin p = new Pushpin(); p.Content = Salon.sname + System.Environment.NewLine + "Rate: "; Layer.AddChild(p, new GeoCoordinate(Salon.sgeo_lon, Salon.sgeo_lat)); } Map1.Children.Add(Layer); }