C# 如何从另一个类更改数据绑定ListView中的项?

C# 如何从另一个类更改数据绑定ListView中的项?,c#,wpf,data-binding,listview,C#,Wpf,Data Binding,Listview,我设置了一个ListView以查看数据库中的大量记录,因此它绑定到SongData的observateCollection: public class SongData { Id { get; set; } Title { get; set; } Artist { get; set; } } 现在,我有一个EventHandler和一个EventSetter设置,以便在用户双击其中一个ListViewItems时显示一个带有某种编辑形式的新窗口。当用户在新窗口中更改数据

我设置了一个
ListView
以查看数据库中的大量记录,因此它绑定到
SongData
observateCollection

public class SongData {
    Id { get; set; }
    Title { get; set; }
    Artist { get; set; }
}
现在,我有一个
EventHandler
和一个
EventSetter
设置,以便在用户双击其中一个
ListViewItems
时显示一个带有某种编辑形式的新窗口。当用户在新窗口中更改数据时,数据将保存到数据库中

我正在试图找到一种方法来更改
列表视图中的数据。我遇到了一些问题。首先,由于
ObservableCollection
是一个私有属性,因此我无法从其他类/窗口访问它。我可以想出一些方法让这部分工作,但他们不是很优雅。有什么建议吗

其次,我不知道如何从
ObservableCollection
获取正确的
SongData
对象,因为我只有可用的Id来查找它。我试图传递整个
SongData
对象,而不仅仅是Id,但这似乎不起作用。我想这个问题应该有一个简单的答案,但我找不到


主要的问题是,当我只有可用的
SongData
对象的Id时,如何将一个项目从
ListView
数据绑定更改为另一个类的
observeCollection

即使这可以用通常的方式实现,您可以考虑实现这样,以便每个窗口都有一个VIEW模型。

基本上,您需要将ListView的SelectedItem绑定到实现的属性

为了使它对其他类可用,您可以在这些类中注册PropertyChanged

因此,每当您选择一个项目时,绑定到该项目的属性也将相应地更改,这将最终广播PropertyChanged消息,该消息将由注册该项目的类捕获


旁注:如果你的属性是公共的

,即使这是通常的方式,你可以考虑实现,这样你就可以为每个窗口建立一个VIEW模型。 基本上,您需要将ListView的SelectedItem绑定到实现的属性

为了使它对其他类可用,您可以在这些类中注册PropertyChanged

因此,每当您选择一个项目时,绑定到该项目的属性也将相应地更改,这将最终广播PropertyChanged消息,该消息将由注册该项目的类捕获

旁注:你的财产是公共的吗