Шаблон pushpin WP7 Bing Maps с изображением не отображается

Моя конечная цель — иметь кнопки с пользовательскими изображениями на карте Bing в приложении WP7. Я создал шаблон управления и карту с канцелярской кнопкой. Прямо сейчас я могу заставить отображаться канцелярские кнопки по умолчанию, но ничего не отображается, когда я пытаюсь создать шаблон. Вот что у меня есть прямо сейчас:

<phone:PhoneApplicationPage.Resources>
    <ControlTemplate x:Key="PushpinControlTemplate" TargetType="my:Pushpin">
        <Image Source="/Images/Pins/pin.png" />
    </ControlTemplate>
</phone:PhoneApplicationPage.Resources>

<my:Map Name="mapMain" CredentialsProvider="CredKey">
    <my:Pushpin/>
</my:Map>

Если я применяю шаблон PushpinControl, ничего не появляется:

<my:Pushpin Template="{StaticResource BoaPushpinControlTemplate}" />

Если я удаляю шаблон, он показывает черную форму по умолчанию.

Должно быть, я делаю свой шаблон неправильно, но я не знаю, в чем проблема. Могу ли я не иметь изображения в ControlTemplate?


person CACuzcatlan    schedule 11.01.2011    source источник
comment
Зовите меня Мистер Глупый, но просто ради спора попробуйте указать буквальные координаты и посмотрите, появится ли там что-нибудь. У меня было какое-то странное поведение с контактами, которые не работали, если они не были инициализированы литералами (я установил местоположение в коде в ответ на действие пользователя).   -  person Peter Wone    schedule 07.06.2011


Ответы (2)


Если вы не используете привязку ItemSource на карте, используйте простой подход к управлению контентом.

   <maps:Pushpin Location="{Binding Location}">
            <Image Source="/Images/Pins/pin.png"   />
   </maps:Pushpin>

Или, если вы динамически заполняете канцелярские кнопки, используйте следующий подход

 <maps:Map x:Name="map" >
    <maps:MapItemsControl ItemsSource="{Binding Collection}">
        <maps:MapItemsControl.ItemTemplate>
            <DataTemplate>
                <maps:Pushpin Location="{Binding Location}">
                    <Image Source="/Images/Pins/pin.png"   />
                </maps:Pushpin>
            </DataTemplate>
        </maps:MapItemsControl.ItemTemplate>
    </maps:MapItemsControl>
</maps:Map>
person Jobi Joy    schedule 11.01.2011
comment
Хорошая мысль, но проблема была не в этом. Я добавил высоту и ширину, и это все еще не видно. - person CACuzcatlan; 11.01.2011

Несмотря на то, что эта тема немного устарела, я собираюсь опубликовать свое предложение:

Попробуйте эту ссылку Работа с заметками у меня это работает (создайте новый стиль и используйте его в объявлении канцелярской кнопки)

(App.xaml, не забудьте пространство имен!)

xmlns:m="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps" >

<Application.Resources>    
    <Style TargetType="m:Pushpin" x:Key="PushpinStyle">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="m:Pushpin">
                    <Image Width="24" Height="24" Source="path_to_pic" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

(in the xaml there the map is)

<Grid x:Name="LayoutRoot" Background="Transparent">
    <m:Map x:Name="Map" Mode="Aerial"
              CredentialsProvider="CredKey">
        <m:MapItemsControl x:Name="Content">
            <m:MapItemsControl.ItemTemplate>
                <DataTemplate>
                    <m:Pushpin Location="{Binding Location}" Style="{StaticResource PushpinStyle}" />
                </DataTemplate>
            </m:MapItemsControl.ItemTemplate>
        </m:MapItemsControl>
    </m:Map>
</Grid>

Если это не работает, проверьте, установлено ли для действия сборки изображения значение content.

Мне потребовалось некоторое время, чтобы понять это, поэтому я надеюсь, что смогу кому-то помочь, несмотря на то, что эта ветка устарела. ;)

person Tobias Helbich    schedule 21.11.2011