2014-01-16 105 views
0

我正在使用Windows Phone應用程序和我的應用程序從Web服務獲取數據,有時連接不好時會出現錯誤並且不顯示數據,因此我在應用程序中添加了一個刷新按鈕,在那些應用程序中,我從mainviewmodel調用loaddata,但沒有發生,有什麼問題?刷新Xaml UI數據綁定

MainViewModel mv = new MainViewModel(); 
private void refreshButton_Click(object sender, EventArgs e) 
{ 
    mv.LoadData(); 
} 

,這裏是loadData()在我的mainviewmodel.cs

public void LoadData() 
     { 

      Geolocator geolocator = new Geolocator(); 
      geolocator.DesiredAccuracyInMeters = 50; 

      try 
      { 
       Geoposition position = 
       await geolocator.GetGeopositionAsync(
       TimeSpan.FromMinutes(1), 
       TimeSpan.FromSeconds(30)); 

       center = new GeoCoordinate(
         position.Coordinate.Latitude, 
         position.Coordinate.Longitude); 

       latitude = position.Coordinate.Latitude; 
       longitude = position.Coordinate.Longitude; 
       UpdateTransport(); 
      } 
      catch (UnauthorizedAccessException) 
      { 
       MessageBox.Show("Location is disable in phone settings."); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      this.IsDataLoaded = true; 
     } 

回答

1

猜測頁面的 DataContext的是MainViewModel對象。在這種情況下,您應該調用DataContext的LoadData,而不是「創建新的MainViewModel對象,然後調用新創建的MainViewModel's LoadData」。因爲該頁面顯示來自DataContext的數據。如果我猜的情況吧,你的刷新按鈕代碼應約這樣的:

private void refreshButton_Click(object sender, EventArgs e) 
{ 
    var vm = (MainViewModel)this.DataContext; 
    vm.LoadData(); 
} 

而且,如果您MainViewModel實施INotifyPropertyChanged正常,你會看到頁面更新。