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消息,该消息将由注册该项目的类捕获
旁注:你的财产是公共的吗