WP7 Pushpin Tooltip / Пузырь - PullRequest
       18

WP7 Pushpin Tooltip / Пузырь

2 голосов
/ 22 ноября 2010

Я портирую приложение для iPhone на WP7, которое содержит карту с несколькими маркерами / кнопками, полученными от веб-службы (местоположение, значок и название).

Я настроил XAML, необходимый для отображения картыа также некоторый код для кнопки:

<phone:PhoneApplicationPage.Resources>
    <ControlTemplate x:Key="customPushpin" TargetType="my:Pushpin">
        <Image Height="39" Source="Resources/Icons/Pushpins/pinGreen.png" Stretch="Fill" Width="32"/>
    </ControlTemplate>
</phone:PhoneApplicationPage.Resources>

<Grid x:Name="LayoutRoot" Background="Transparent">
    <my:Map Height="Auto" HorizontalAlignment="Stretch" Margin="0" x:Name="Map"
            VerticalAlignment="Stretch" Width="Auto" CredentialsProvider="{Binding CredentialsProvider}" 
            CopyrightVisibility="Collapsed" LogoVisibility="Collapsed" Center="{Binding Mode=TwoWay, Path=Center}" 
            ZoomBarVisibility="Visible" 
            ZoomLevel="{Binding Zoom, Mode=TwoWay}">
        <my:MapItemsControl ItemsSource="{Binding Pushpins}">
            <my:MapItemsControl.ItemTemplate>
                <DataTemplate>
                    <my:Pushpin MouseLeftButtonUp="Pushpin_MouseLeftButtonUp" 
                                Location="{Binding Location}" 
                                Template="{StaticResource customPushpin}">                           
                    </my:Pushpin>
                </DataTemplate>
            </my:MapItemsControl.ItemTemplate>
        </my:MapItemsControl>
    </my:Map>        
</Grid>

Я ищу способ добавить какой-нибудь пузырь, когда пользователь нажимает на кнопку.Я немного разбирался в информационных блоках / всплывающих подсказках, но поскольку они работают при наведении, это не то, что я могу использовать для телефона (нажмите / нажмите).

Я предполагаю, что в WP7 нет аналогичного элемента управления, который создает пузырь- как я могу создать нечто подобное?

Заранее спасибо,

Алекс

Ответы [ 4 ]

4 голосов
/ 23 ноября 2010

Вы можете просто поместить квадратную рамку внутри LayoutRoot с Visibility = "Collapsed", а затем, когда вы нажимаете на кнопку, вы обновляете ее содержимое и делаете его видимым.

Просто убедитесь, что поставили после вашего элемента управления картой (в противном случае он будет отображаться за картой и, следовательно, будет невидимым).

2 голосов
/ 22 июня 2012

Самый простой способ добиться этого - показать / скрыть содержимое кнопки на касании вместо MouseLeftButtonUp из-за некоторых соображений производительности.

void pushPin_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
   this.border.Visibility = System.Windows.Visibility.Visible;

    //stop the event from going to the parent map control
    e.Handled = true;
}

private void map_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
   this.border.Visibility = System.Windows.Visibility.Collapsed;   
}
1 голос
/ 22 ноября 2010

Вы можете создать собственное всплывающее окно.

Отличное видео, объясняющее, как это сделать, находится здесь .

0 голосов
/ 11 февраля 2011

Другое решение - использовать ContextMenu из набора инструментов Silverlight для Windows Phone! Просто перейдите на страницу Coding4Fun на CodePlex и загрузите ее (она содержит инструментарий), а в своем XAML-файле внутри определения PushPin добавьте следующее:

<map:Pushpin x:Name="currentLocation">
<toolkit:ContextMenuService.ContextMenu>
    <toolkit:ContextMenu IsZoomEnabled="False">
        <toolkit:MenuItem Header="this is menu item 1" Click="MenuItem_Click" />
        <toolkit:MenuItem Header="this is menu item 2" Click="MenuItem_Click" />
        <toolkit:MenuItem Header="this is menu item 3" Click="MenuItem_Click" />
    </toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu></map:Pushpin>

Таким образом, когда вы нажмете и удержите кнопку, вы получите контекстное меню! (хороший пример также можно найти здесь: пример )

...