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");