Как мне обрабатывать события нажатия на кнопки в моем элементе управления Bing Maps для WP7 - PullRequest
1 голос
/ 19 сентября 2010

Я собираюсь добавить шаблонные <Button> элементы управления внутри каждого из моих Pushpins на моей карте, чтобы взаимодействовать с пользователем, щелкающим (эх, касающимся) pushpin. Это правильный способ работы с кнопками? Я не хочу обрабатывать MouseDown и MouseUp и заново изобретать все (и никто не должен).

Мне просто нужно подтверждение.

Ответы [ 3 ]

1 голос
/ 19 сентября 2010

MouseLeftBUttonUp? У меня есть только эмулятор, и он работает на моей пользовательской канцелярской кнопке:

<Maps:MapItemsControl ItemsSource="{Binding Stores}">
                <Maps:MapItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Maps:Pushpin Location="{Binding Location}" MouseLeftButtonUp="Pushpin_MouseLeftButtonUp">
                            <Maps:Pushpin.Template>
                                <ControlTemplate TargetType="Maps:Pushpin">
                                    <Border BorderBrush="Black" BorderThickness="1" Background="MintCream" Width="32" Height="32" HorizontalAlignment="Center" VerticalAlignment="Center">
                                        <TextBlock Text="{Binding Store.Address}" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                                    </Border>
                                </ControlTemplate>
                            </Maps:Pushpin.Template>
                        </Maps:Pushpin>
                    </DataTemplate>
                </Maps:MapItemsControl.ItemTemplate>
            </Maps:MapItemsControl>

Изменить: После получения реального устройства я протестировал свое приложение и могу подтвердить, что MouseLeftBUttonUp - плохая идея (и не рекомендуется Microsoft в Советах по производительности )

вместо этого вы должны использовать события Manipulation:

<Maps:MapItemsControl ItemsSource="{Binding Stores}">
<Maps:MapItemsControl.ItemTemplate>
    <DataTemplate>
        <Maps:Pushpin Location="{Binding Location}" ManipulationStarted="Pushpin_ManipulationStarted">
            <Maps:Pushpin.Template>
                <ControlTemplate TargetType="Maps:Pushpin">
                    <Image Width="48" Height="48" Source="{Binding InventoryIcon}" />
                </ControlTemplate>
            </Maps:Pushpin.Template>
        </Maps:Pushpin>
    </DataTemplate>
</Maps:MapItemsControl.ItemTemplate>
</Maps:MapItemsControl>
0 голосов
/ 27 апреля 2011

Если все, что вам нужно - это иметь возможность нажимать / нажимать на каждую кнопку, добавьте событие MouseLeftButtonUp к каждой кнопке, которую вы создаете.Например:

Microsoft.Phone.Controls.Maps.Pushpin pp = null;
System.Device.Location.GeoCoordinate loc = null;

pp = new Microsoft.Phone.Controls.Maps.Pushpin();
loc = new System.Device.Location.GeoCoordinate([Latitude], [Longitude]);

pp.Location = loc;
pp.Content = "Some Content";
pp.MouseLeftButtonUp += new MouseButtonEventHandler(Pushpin_MouseLeftButtonUp);

затем добавьте

void Pushpin_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
     Microsoft.Phone.Controls.Maps.Pushpin tempPP = new Microsoft.Phone.Controls.Maps.Pushpin();

     tempPP = (Microsoft.Phone.Controls.Maps.Pushpin)sender;

     // you can check the tempPP.Content property

} 
0 голосов
/ 19 сентября 2010

Почему бы вам не добавить невидимую кнопку в стиле внутри MapItemsControl.ItemTemplate и использовать кнопку «Нажмите на кнопку».

...