2

みんな私は本当にあなたの助けが必要です、私は地図を持っています

xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
xmlns:maptk="clr-namespace:Microsoft.Phone.Maps.Toolkitassembly=Microsoft.Phone.Controls.Toolkit"

         <maps:Map Grid.Row="0"  Tap="Onm_MapControlTap" Name="m_MapControl
            <maptk:MapExtensions.Children>
                <maptk:Pushpin x:Name="m_PushPin" Tap="OnPushPinTap">
                  <maptk:Pushpin.Content>
                    <StackPanel>                        
                            <TextBlock Text=""/>
                            <Image Source=""/>
                    </StackPanel>
                </maptk:Pushpin.Content>
            </maptk:Pushpin>
           </maptk:MapExtensions.Children>
        </maps:Map>

ジオウォッチャーからの座標がある場合、または地図をタップした場合、それらの座標を画鋲に追加したいと思います。

m_PushPin.GeoCoordinate = m_watcher.Position.Location;

m_PushPinでタイプ「System.NullReferenceException」の例外が発生しました。このPushPinがnullである理由がわかりません。私が間違っていることを教えてもらえますか、そしてどうすればこれを修正できますか?

4

2 に答える 2

3

これは、XAMLパーサーの既知の問題です。PushPinはAttachedDependencyプロパティ(MapExtensions.Children)にネストされているため、UserControlと同じ論理ツリーの一部にはならず、そのスコープ内のFindNameによって取得されません。

代わりに、手動でビジュアルツリーをトラバースし、必要なコントロールを取得する必要があります。幸いなことに、マップコントロールには、この機会のためだけにヘルパーメソッドが付属しています。

    var pushpin = MapExtensions.GetChildren(myMap).OfType<Pushpin>().First(p => p.Name == "m_PushPin");
于 2013-02-14T19:09:02.043 に答える
1

GeoCoordinate別の方法として、バインディングを使用して一部を画鋲にバインドすることもできます。

于 2013-02-14T20:44:56.973 に答える