WP7 chincheta sobre herramientas / burbuja
-
27-09-2019 - |
Pregunta
Estoy portar una aplicación de iPhone para WP7 que contiene un mapa con varios marcadores / chinchetas que recibo de un servicio web (ubicación, icono y título).
He fijado el XAML necesario para visualizar el mapa, así como algo de código para la chincheta:
<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>
Estoy buscando una manera de agregar algún tipo de burbujas cuando el usuario hace clic en el marcador. He mirado un poco en CajasInfo / información sobre herramientas, pero ya que trabajan en vuelo estacionario, eso no es algo que pueda usar el teléfono (toque / clic).
estoy adivinando que no hay un control similar en WP7 que crea una burbuja? - ¿cómo podría ir sobre la creación de algo similar
Gracias de antemano,
Alex
Solución
Simplemente podría colocar un borde cuadrado en el interior LayoutRoot con Visibilidad = "colapsado", a continuación, al hacer clic en el marcador de actualizar su contenido y hacerlo visible.
Sólo asegúrese de ponerlo después el control del mapa (de lo contrario, se representará detrás del mapa y en consecuencia será invisible).
Otros consejos
La forma más sencilla de lograr esto es para mostrar / ocultar el contenido del Pasador en grifo en lugar de MouseLeftButtonUp debido a algunas consideraciones de rendimiento.
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;
}
Se puede crear una ventana emergente personalizado.
Un gran video que exaplains cómo hacer esto se encuentra aquí .
Otra solución es usar el ContextMenu del kit de herramientas de Silverlight para Windows Phone! Sólo tienes que ir a la Coding4Fun en CodePlex y descargarlo (que contiene el kit de herramientas) y en su interior XAML la chincheta Agregar definición siguiente:
<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>
De esta manera, cuando se mantiene pulsada la chincheta, que obtendrá la contectmenu! (Buen ejemplo también encontrar aquí: ejemplo )