2010-07-16 64 views
1

我有一个ListView建立从数据库中查看多个记录,因此它必将SongDataObservableCollection如何从另一个类更改数据绑定ListView中的项目?

public class SongData { 
    Id { get; set; } 
    Title { get; set; } 
    Artist { get; set; } 
} 

现在,我有一个EventHandler为了建立与EventSetter到当用户双击ListViewItems之一时,用某种编辑窗体显示一个新窗口。当用户更改新窗口中的数据时,它将被保存到数据库中。

我试图找出一种方法来改变在ListView数据。我遇到了一些问题。首先,由于ObservableCollection是私有财产,所以我不能从另一个类/窗口存取权限了。我可以想出几个方法来使这部分工作,但他们不是很优雅。有什么建议么?

其次,我不知道如何从ObservableCollection获得正确的SongData对象,因为我只有Id可用来查找它。我试图通过整个SongData对象,而不是仅仅是ID,但似乎并没有工作。我觉得应该有一个简单的anwser这个问题,但我不能找到它...

主要的问题是我怎么能一个项目从ListView数据绑定到ObservableCollection<SongData>从另一个类的变化,当我只有可用的SongData对象的Id。

回答

1

虽然这是可以用通常的方式,你可以考虑实施ViewModel pattern,这样你将有一个ViewModel为每个窗口。

基本上你需要ListView的的SelectedItem绑定到实现INotifyPropertyChanged的属性。

为了这是提供给你可以在这些类的PropertyChanged messages注册其他类。

因此,只要你选择一个项目,势必给它的财产,也将发生相应的变化最终将播出这将由那些已经注册了它的类被捕获的PropertyChanged消息。

侧面说明:难道你们的性质是公共

相关问题