我有一个带有数据模板的列表框
<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>
我希望能够轻敲列表中的一个项目来删除它,但是我找不到任何方法来获取被点击的项目,只有被选中的(这并不总是相同的)
例如,如果我点击列表中的项目 1 并轻按第二个,则 ListBox.SelectedItem
将成为第一个项目。
如何获得元素 2?如果我能在模板中以某种方式在项目本身上放置一个事件,那就太好了
最佳答案
e.OriginalSource
应该是项目中的某个元素(例如 TextBlocks
之一),它具有作为 DataContext
的项目,所以你应该能够像这样从你的源集合中删除该项目:
var item = (FrameworkElement)e.OriginalSource;
Data.Remove((MyItemType)item.DataContext);
关于c# - 从 WPF 中的 ListBox 获取被点击的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779400/