所以我使用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秒,並在運行調試時播放它。我是否正確執行調試/運行仿真器的位置部分?
更新:更新後刪除字符串等等項目以創建一個基於位置的列表,它似乎工作。
的PropertyChanged事件您看起來沒有任何代碼在座標變化時更新視圖? –
我在文檔中看到的唯一的事情是使用status/position changed事件,並且在示例的情況下,更新了TextBlock控件。我想在應用程序加載時更新當前位置,以便我可以獲得一般區域中的事物列表。有超出它的代碼(blah是一個用於測試的變量),但是blah以「NaN; NaN」的形式返回,這阻止了前進的檢查。 – Robert
我的意思是你的'PositionChanged'方法更新你的'coord',*但你從來沒有讀過它*除非它有機會被設置,你的代碼也沒有使用任何數據綁定來自動更新 - 如果你的座標在您的ViewModel上(假設您遵循MVVM模式,按照屬性名稱),那麼偵聽位置更改的事件處理程序也可能引發當前'blah'變量的ViewModel版本的PropertyChanged事件 –