c# - 从 WPF 中的 ListBox 获取被点击的元素

标签 c# .net wpf xaml windows-phone-7

我有一个带有数据模板的列表框

<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/

相关文章:

c# - 在循环中创建的分隔字符串

c# - 创建具有选项卡功能的 Web 浏览器

c# - 在 WHILE 循环中处理 C# 文件流输入导致执行时间错误

c# - 如何获取 SelectedItem 的所有子项

c# - 使用 XamlReader 和 XamlWriter 时将一个 FlowDocument 的内容插入另一个

c# - WPF - 具有 MultiBinding 和不同 DataContexts 的自定义工具提示

c# - Linq DataTable 和 Take 方法

c# - 添加到 C++ 应用程序 C# GUI

c# - 从语言文件绑定(bind)动态值的正确方法是什么?

c# - 在列表上查找联合、减去、交集的函数