Всплывающая подсказка/пузырь канцелярской кнопки WP7

Я переношу приложение для 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 нет аналогичного элемента управления, который создает пузырь - как я мог создать что-то подобное?

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

Алекс


person Xander    schedule 22.11.2010    source источник


Ответы (4)


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

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

person Francesco De Vittori    schedule 23.11.2010
comment
Спасибо за ваш ответ, я действительно следовал аналогичному подходу. Я разместил рамку в нижней части экрана (с некоторыми причудливыми эффектами в Blend), которая появляется, когда пользователь нажимает на булавку с информацией об указанной булавке. - person Xander; 23.11.2010
comment
Я тоже искал это. Жаль, что нет встроенного способа добавить его рядом с пузырем. Я удивлен, что они не сохранили всплывающую подсказку и не основывали ее на вкладке вместо входа/выхода мыши. - person CACuzcatlan; 23.11.2010

Самый простой способ добиться этого — показать/скрыть содержимое канцелярской кнопки вместо 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;   
}
person Boryana Miloshevska    schedule 22.06.2012

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

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

person Den Delimarsky    schedule 22.11.2010

Другим решением является использование 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>

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

person Depechie    schedule 11.02.2011