2011-08-01 8 views
1

"<device:GeoCoordinate..."という項目のlat/lngの値を動的に設定しようとしています。私はハードXAMLのコードこの問題はないが、私はその場でそれを設定しようとしたとき、私は(下に示すロードされたハンドラ内)nullポインタ例外を取得GeoCoordinate lat + lngの値を動的に設定する方法

XAML

<maps:Map ZoomLevel="6" Mode="Aerial" Grid.Row="1" Grid.ColumnSpan="2"> 
     <maps:Map.Center> 
      <device:GeoCoordinate x:Name="theLocation"/> 
     </maps:Map.Center> 
     <maps:MapLayer x:Name="TheMapLayer"/> 
    </maps:Map> 

C#の

することができます
void ViewBingMaps_Loaded(object sender, RoutedEventArgs e) 
    { 
     //get lat + lng for the device and set it dynamically 
     theLocation.Latitude = 41.5686949; 
     theLocation.Longitude = -93.7943157; 
    } 

これを設定することはできますか、私はデバイスを誤解していますか?GeoCoordinate目的?

答えて

1

コードビハインドで簡単に再インスタンスGeoCoordinateクラスとそれにマップセンターを設定します。

theLocation = new System.Device.Location.GeoCoordinate(10.0, 10.0); 
map1.Center = theLocation; 
0

または代わりに、MVVMのアプローチを使用します。

、その後に結合する
<maps:Map Center="{Binding Center}"> 
    ... 
</maps:Map> 

GeoCoordinateプロパティーはCenterとなります。

public GeoCoordinate Center 
{ 
    get; 
    private set; 
} 

それはその後、動的

同様に、あなたが(かなり便利になりやすい)ZoomPropertyを結合し、かなりできる(あなたがは?右、ViewModelにしなければならないの)あなたのViewModelから変更することができます他にもたくさん!