2012-06-12 111 views
1

所以我使用this guide,但在测试中没有运气来决定它是否工作。该代码的唯一变体是,不是更改TextBlock,而是设置一个在函数之外声明的静态GeoCoordinate对象。在WP7仿真器中测试位置

public static void PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) 
    { 
     coord = e.Position.Location; 
    } 

好吧,我改变现状的事情,而不是显示在文本框中,以显示与OK按钮一个MessageBox,并取消按钮事件。

在渲染的MainPage我:

private void MainPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     if (watcher == null) 
     { 
      watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default); 
      watcher.MovementThreshold = 20; 

      watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(StatusChanged); 
      watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(PositionChanged); 
     } 
     watcher.Start(); 
     if (!App.ViewModel.IsDataLoaded) 
     { 
      string blah = ""; 
      blah += coord.Latitude.ToString(); 
      blah += "; " + coord.Longitude.ToString(); 

但是,如果我不初始化坐标,它的错误了(可以理解),但如果我这样做=新会有地理座标();它会返回所有数字项目的NaN。我已经在事件处理程序中设置了断点(从未碰到过预期的行为?)

在模拟器中,我使用了>>东西,将它设置为生存并选择了几个位置,设置切换位置的时间到10秒,并在运行调试时播放它。我是否正确执行调试/运行仿真器的位置部分?

更新:更新后删除字符串等等项目以创建一个基于位置的列表,它似乎工作。

+1

的PropertyChanged事件您看起来没有任何代码在坐标变化时更新视图? –

+0

我在文档中看到的唯一的事情是使用status/position changed事件,并且在示例的情况下,更新了TextBlock控件。我想在应用程序加载时更新当前位置,以便我可以获得一般区域中的事物列表。有超出它的代码(blah是一个用于测试的变量),但是blah以“NaN; NaN”的形式返回,这阻止了前进的检查。 – Robert

+1

我的意思是你的'PositionChanged'方法更新你的'coord',*但你从来没有读过它*除非它有机会被设置,你的代码也没有使用任何数据绑定来自动更新 - 如果你的坐标在您的ViewModel上(假设您遵循MVVM模式,按照属性名称),那么侦听位置更改的事件处理程序也可能引发当前'blah'变量的ViewModel版本的PropertyChanged事件 –

回答

0

PositionChanged方法更新你的坐标,但你从来没有读过它,除了它必须设置一个机会面前,也没有你的代码中使用的任何数据绑定自动更新 - 如果你的坐标是在您的视图模型(假设你”重新关注MVVM模式,然后是属性名称),那么侦听位置更改的事件处理程序也可能引发ViewModel的当前版本blah变量

相关问题