2012-01-08 97 views
3

我有一個列表框與一個DataTemplate獲取點擊的元素在WPF

<Button Name="ButtonSortDate" Content="Date" Grid.Column="1" Click="ButtonSortDateClick" /> 
<Button Name="ButtonSortABC" Content="ABC.." Grid.Column="2" Click="ButtonSortABCClick" /> 
<!--ItemsSource="{Binding NotesCollection}"--> 
<ListBox Name="ListBoxNotes" 
    Grid.Row="1" Grid.ColumnSpan="3"        
    DoubleTap="DeleteDoubleTap"> 
    <ListBox.ItemTemplate>        
     <DataTemplate> 
      <StackPanel Margin="0,0,0,17" Width="432" Height="78" > 
       <TextBlock Text="{Binding NoteText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" /> 
       <TextBlock Text="{Binding Date}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

我希望能夠dobble在列表中點擊要刪除的項目,但我不能找到任何方式來獲得點擊項目,只有被選中的(這並不總是相同)

如果我在列表示例龍頭項目1和dobble水龍頭第二,那麼ListBox.SelectedItem將是第一個項目。

如何獲得第2項?將是很好,如果我能在模板上的項目本身投入的事件在某種程度上

+2

不要你的意思是*「在Windows Phone 7」 *?首先,WPF中不存在'DoubleTap' ...在WPF中,使用事件路由或'EventSetters'可以很容易,但是我懷疑這些解決方案對於WP7是有效的。 – 2012-01-08 17:16:50

回答

9

e.OriginalSource應該是該項目中的一些元素(如TextBlocks之一),它擁有該項目爲DataContext,所以你應該能夠從源集合中刪除的項目是這樣的:

var item = (FrameworkElement)e.OriginalSource; 
Data.Remove((MyItemType)item.DataContext); 
+0

不錯,任何機會,你可以編輯這篇文章,讓我可以upvote它?點擊錯誤:( – Mech0z 2012-01-08 17:44:18

+0

@ Mech0z:哈哈,想知道downvote從哪裏來。 – 2012-01-08 17:45:23