C# 如何将id附加到ListViewItem?

C# 如何将id附加到ListViewItem?,c#,wpf,data-binding,listview,listviewitem,C#,Wpf,Data Binding,Listview,Listviewitem,在我最近的项目中,我有一个列表视图,它绑定到一个可观察集合。此ObservableCollection包含我的类的许多对象SongData: public class SongData { public int Id { get; set; } public string Title { get; set; } public string Artist { get; set; } } 这些对象由来自SQLite数据库的数据填充,属性Id包含该记录的主键。显然,我不想在我

在我最近的项目中,我有一个
列表视图
,它绑定到一个
可观察集合
。此
ObservableCollection
包含我的类的许多对象
SongData

public class SongData
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Artist { get; set; }
}
这些对象由来自SQLite数据库的数据填充,属性
Id
包含该记录的主键。显然,我不想在我的ListView中显示这个id。但是,在处理ListView上的双击事件时,我确实需要这个id

我当前的xaml代码是:

<ListView Margin="12,41,12,12" Name="lvwOverview" SelectionMode="Single" ItemsSource="{Binding SongCollection}" MouseDoubleClick="lvwOverview_MouseDoubleClick">
     <ListView.View>
        <GridView>
            <GridViewColumn Width="200" Header="Title" DisplayMemberBinding="{Binding Title}"></GridViewColumn>
            <GridViewColumn Width="200" Header="Artist" DisplayMemberBinding="{Binding Artist}"></GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>


现在,我希望能够在用户双击ListViewItem时获取id(用于数据库)。有什么想法吗?

在双击处理程序中,您应该能够获得对双击项目的引用(或者按自己的方式)。这与绑定到的SongData引用相同

只是因为它没有显示并不意味着该财产不再存在。它应该已经准备好,可以使用。

试试看

var data = List.SelectedItem as SongData;
if (data != null)
    ...

这很有效,谢谢!奇怪的是我自己没有想到这一点:D