所以我正在使用本指南,但在测试以确定它是否有效时运气不佳。该代码的唯一变化是,我没有更改 TextBlock,而是设置在函数外部声明的静态 GeoCoordinate 对象。
public static void PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
coord = e.Position.Location;
}
好吧,我将状态更改为而不是显示在文本框中,以显示带有"确定"按钮的消息框,并删除了按钮事件。
在主页渲染中,我有:
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();
但是,如果我不初始化坐标,它会出错(可以理解),但是如果我这样做=新的GeoCoordinate();它会为所有数字项目返回NaN。我在从未命中的事件处理程序中设置了断点(虽然预期的行为?
在模拟器中,我使用了>>的东西,将其设置为实时并选择了几个位置,将切换位置的时间设置为 10 秒,并在运行调试时播放它。我是否正确地调试/运行模拟器的位置部分?
更新:更新它以删除字符串 blah 项以根据位置创建列表后,它似乎正在工作。
您的 PositionChanged
方法会更新您的坐标,但除非在有机会设置之前,否则您从未读取它,您的代码也不会使用任何数据绑定来自动更新 - 如果您的坐标位于 ViewModel 上(假设您遵循 MVVM 模式,按属性名称),则侦听位置更改的事件处理程序也可以为 ViewModel 的当前blah
变量的版本引发 PropertyChanged 事件