2011-01-26 6 views
8

Есть ли способ назначить событие клика для изображений? Я хотел бы назначить события кнопкам удаления и поиска внутри моего списка, который отображает мои данные. Есть ли способ сделать это с помощью управления изображениями или мне нужно создать стиль в BLEND для кнопки?WP7 - изображение Click Event?

 <ListBox x:Name="lbPills" ItemsSource="{Binding pillItemsCollection}" SelectionChanged="lbPills_SelectionChanged"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel x:Name="DataTemplateStackPanel" Orientation="Horizontal"> 
         <TextBlock FontFamily="Segoe WP Semibold" FontWeight="Bold" FontSize="30" VerticalAlignment="Top" Margin="20,0">*</TextBlock> 
         <StackPanel> 
          <TextBlock x:Name="ItemText" Text="{Binding Name}" Margin="-2,-13,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
         </StackPanel> 

         <Image Source="Images/delete.png" Margin="10,0"/> 
         <Image Source="Images/search.png" Margin="10,0"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

ответ

9

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

WP7 Tip of the Day: Silverlight Toolkit: Gestures

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

+0

Есть ли способ, чтобы добавить идентификатор или значение индекса для изображения с помощью Жесты, чтобы я мог определить, какой элемент в коллекции был выбран при нажатии кнопки. – webdad3

+0

/Все - Жесты отлично поработали! Я использую SelectionChanged = "lbPills_SelectionChanged", чтобы выяснить, какой элемент в коллекции был нажат. Спасибо за вашу помощь! – webdad3

+0

Связанный учебник не существует. –

2

Ручка ManipulationCompleted событие (которое любой кран, двойное нажатие, салфетки, ласкать или гладить) к изображению (ов). Таким образом:

<Image Source="Images/delete.png" Margin="10,0"/> будет <Image x:Name="ImageDelete" ManipulationCompleted="ImageDelete_ManipulationCompleted" Source="Images/delete.png" Margin="10,0"/>. Затем в обработчике ImageDelete_ManipulationCompleted трек, откуда он вошел, от sender и делайте свое дело.

Если вы хотите отслеживать только салфетки вместо крана, просто выполните оператор if на e.IsInertial от ManipulationCompletedEventArgs.

13

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

 <Button> 
      <Button.Template> 
       <ControlTemplate> 
        <Image Source="Images/delete.png" Margin="10,0"/> 
       </ControlTemplate> 
      </Button.Template> 
     </Button> 

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

+2

Мне тоже нравится этот ответ. –

+1

Просто хотел сообщить вам, я попробовал ваш ответ за другую кнопку, которую я использовал, где хотел разместить изображение, и оно отлично поработало! Благодаря! – webdad3

+0

Рад, что я мог бы помочь :) – avanek

0

Если ListBox не в Panorama управления, то вы можете просто обрабатывать SelectionChanged события для списка, а затем отобразить Удалять и поиск вариантов в качестве ApplicationBar для страницы.

0

Я делаю это с MouseLeftButtonDown и MouseLeftButtonUp. Он заменяет вкладку или нажимает на устройство, как вы нажимаете кнопку мыши на ПК с помощью мыши. Он работает в моем приложении. Просто попробуйте это, и вы будете счастливы, я думаю.

0

Он работал этот путь для меня (Making Padding = "- 10" удалены границы кнопки и отступы внутри кнопки)

<Button x:Name="Channells" Click="Thumb_Click" Padding="-10" > 
     <Image 
      VerticalAlignment="Center" 
      Source="Assets/Images/thumb2.jpg"/> 
</Button> 

* .cs

void Thumb_Click(object sender, RoutedEventArgs e) 
    { 
     Debug.WriteLine("Thumb Clicked"); 
    }