Xaml wp8:如何将地图插入全景项目HeaderTemplate

Xaml wp8:如何将地图插入全景项目HeaderTemplate,xaml,data-binding,windows-phone-8,map,panorama-control,Xaml,Data Binding,Windows Phone 8,Map,Panorama Control,我正在尝试将地图控件插入我的应用程序中的全景项目标题: <phone:PanoramaItem Orientation="Horizontal" Width="480"> <phone:PanoramaItem.HeaderTemplate> <DataTemplate> <StackPanel Height="155" Width="478" Margin

我正在尝试将地图控件插入我的应用程序中的全景项目标题:

<phone:PanoramaItem Orientation="Horizontal" Width="480">

            <phone:PanoramaItem.HeaderTemplate>
                <DataTemplate>
                    <StackPanel Height="155" Width="478" Margin="-23,0,0,0">
                        <!-- Map -->
                        <maps:Map x:Name="StationsMapOverview"
                                  Visibility="{Binding IsDataLoaded, Converter={StaticResource BooleanToVisibilityConverter}}"
                                  Height="115" 
                                  Margin="0,-34,0,0"
                                  ZoomLevel="10"
                                  Center="{Binding UserGeoCoordinate, Mode=TwoWay}"
                                  CartographicMode="Road"
                                  ColorMode="Light"
                                  PedestrianFeaturesEnabled="True"
                                  LandmarksEnabled="True"/>
                    </StackPanel>
                </DataTemplate>
            </phone:PanoramaItem.HeaderTemplate>

            <!-- Stations list -->
            <phone:LongListSelector x:Name="ListNearbyItems" 
                                        ItemsSource="{Binding StationItems}" Margin="0,-38,0,0" Height="480">
...
Datacontext由ViewModelLocator类设置,可用于其他页面。 “中心”选项绑定不起作用

所以我的问题是,是否有人试图将地图集成到全景项目标题中

要在标头模板内传递DataContext,请添加:

<phone:PanoramaItem Header={Binding} x:Name="panorama"
无法按名称访问模板中的对象。使用下面的代码按名称查找元素:

private T FindElementInVisualTree<T>(DependencyObject parentElement, string name) where T : DependencyObject
{
    var count = VisualTreeHelper.GetChildrenCount(parentElement);
    if (count == 0)
        return null;

    for (int i = 0; i < count; i++)
    {
        var child = VisualTreeHelper.GetChild(parentElement, i);

        if (child != null && child is FrameworkElement && (child as FrameworkElement).Name.Equals(name))
        {
            return (T)child;
        }
        else
        {
            var result = FindElementInVisualTree<T>(child, name);
            if (result != null)
                return result;

        }
    }
    return null;
}
然后打电话:

Map map = FindElementInVisualTree<Map>(panorama, "StationsMapOverview");
Map map = FindElementInVisualTree<Map>(panorama, "StationsMapOverview");