次の XAML コードがあります。
<maps:Map Name="PlaygroundMap" Credentials="YOUR_BING_MAPS_KEY">
<maps:MapItemsControl
x:Name="PlaygroundMapItems"
my:MapExt.ClusteredItemsSource="{Binding Locations}"
ItemTemplate="{StaticResource PinTemplate}"/>
</maps:Map>
また、 ClusteredItemsSourceは、次のコードを持つ私自身の添付プロパティです (重要な部分のみが表示されます)。
private static void OnItemsReceived(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var mapItemsControl = d as MapItemsControl;
if(mapItemsControl == null) return;
var map = VisualTreeHelper.GetParent(mapItemsControl); // this is always NULL
var map2 = mapItemsControl.Parent; // this is always NULL
var items = e.NewValue as IEnumerable<Location>;
mapItemsControl.ItemsSource = items;
}
したがって、私の要件は、OnItemsReceived メソッドで MAP 参照を使用することです。もう一度 XAML を確認すると、mapItemsControl が Map の子 (または map が mapItemsControl の親) であることがわかるので、これは簡単だと思いました。
しかし、どういうわけか変数 map と map2 は常に NULL です。これは正常な動作ですか?
また、この「親」アプローチが機能しない場合は、MapItemsControl で Map 参照を取得するための他のオプションを教えてください (正確には、カスタム添付プロパティでマップ参照を取得するため)。
ところで、私は Bing Maps SDK for WinRT を使用しています。