我正在编写需要获取设备位置的Windows Phone 8应用程序(不跟踪更改,只获取位置)。我将下一个代码添加到我的起始页面的OnNavigatedTo()方法中,但是在启动应用程序后,即使在10秒超时后,进度指示器也不会隐藏。但是,如果我导航到另一个页面然后返回,一切正常。这发生在模拟器上,我没有真正的设备。我做错了什么?
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
if(_geoPosition == null)
{
try
{
var geolocator = new Geolocator();
geolocator.DesiredAccuracyInMeters = 50;
_progressIndicator = new ProgressIndicator
{
IsIndeterminate = true,
Text = "Getting current location, please wait...",
IsVisible = true
};
SystemTray.SetIsVisible(this, true);
SystemTray.SetProgressIndicator(this, _progressIndicator);
_geoPosition = await geolocator.GetGeopositionAsync(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10));
_progressIndicator.IsVisible = false;
SystemTray.SetIsVisible(this, false);
}
catch (UnauthorizedAccessException)
{
MessageBox.Show("Location is disabled in phone settings");
}
}
}
谢谢!
UPD :只是尝试将此代码添加到空项目中,并且工作正常。试图注释掉OnNavigatedTo的某些部分,我没有将其包含在代码片段中,并发现原因在于此页面的数据源初始化。我很抱歉误报。
答案 0 :(得分:1)
您的代码适用于我,尝试经典重启VS和项目!代码应该可以工作,使用模拟器和设备进行测试(诺基亚820)。
祝你好运