2012-06-12 109 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變量

相關問題