刷新Xaml UI数据绑定

时间:2014-01-16 10:11:02

标签: c# xaml mvvm windows-phone-8

我正在使用Windows Phone应用程序和我的应用程序从Web服务获取数据,有时当连接不好时会出现错误而不显示数据,所以我在我的应用程序和应用程序中添加了一个刷新按钮从mainviewmodel调用loaddata但没有任何反应,出了什么问题?

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

这是我的mainviewmodel.cs中的loadData()

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 个答案:

答案 0 :(得分: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();
}

如果您在INotifyPropertyChanged中正确实施了MainViewModel,则会看到该网页已更新。