C# c mvvm嵌套的ObservableCollection集合已更改新闻开始索引>0
我是新来的。我整天都在寻找解决办法,所以我决定在这里问一下 我正在开发一个使用WPF和数据绑定/MVVM的应用程序。 我有一个嵌套的ObservableCollection,它是类程序的一部分。两者都正确实现InotifyProperty更改 在我的构造函数中,我创建了一个名为ListPrograms的ObservableCollection类型的程序,并从我的数据服务中用程序列表填充它。这一切都很好。 此外,绑定工作正常,我在主视图中选择了一个程序,嵌套的价格列表显示在详细视图中。OnPropertyChange为SalesPrice的每个属性正确激发 我的要求是,在用户输入时,程序需要重新计算嵌套列表中每个行项目的累计价格。我有一个正确的方法 为了运行该方法,我尝试附加collectionchanged事件C# c mvvm嵌套的ObservableCollection集合已更改新闻开始索引>0,c#,wpf,mvvm,observablecollection,inotifycollectionchanged,C#,Wpf,Mvvm,Observablecollection,Inotifycollectionchanged,我是新来的。我整天都在寻找解决办法,所以我决定在这里问一下 我正在开发一个使用WPF和数据绑定/MVVM的应用程序。 我有一个嵌套的ObservableCollection,它是类程序的一部分。两者都正确实现InotifyProperty更改 在我的构造函数中,我创建了一个名为ListPrograms的ObservableCollection类型的程序,并从我的数据服务中用程序列表填充它。这一切都很好。 此外,绑定工作正常,我在主视图中选择了一个程序,嵌套的价格列表显示在详细视图中。OnProp
`void GetPrograms()
{
ListPrograms.Clear();
var prgms = DataService.GetProgramList(SearchStringProgram);
ListPrograms=new ObservableCollection<Program>(prgms);
foreach (var prg in ListPrograms)
{
prg.SalesPrices.CollectionChanged+=SalesPrices_CollectionChanged;
} `
我遇到的问题是,集合更改事件仅针对我在运行时添加到集合中的新SalesPrice进行注册。我检查e.NewStartingIndex,它从初始销售价格记录的数量开始。
第一个程序和9个销售价格是它的可观察集合,e.NewsStartingIndex的值是8。
当我在运行时将一条新记录添加到列表中时,服务器甚至正在注册并通知更改
我认为这是因为我正在从dataservice传递程序对象,其中包含一个已填充的SalesPrices列表,而事件只是注册新项目
有什么想法吗
Frank在您第一次分析所有现有集合项目时,只需对其执行事件订阅:
void GetPrograms()
{
var prgms = DataService.GetProgramList(SearchStringProgram);
ListPrograms=new ObservableCollection<Program>(prgms);
foreach (var prg in ListPrograms)
{
prg.SalesPrices.CollectionChanged += SalesPrices_CollectionChanged;
foreach (SalesPrice item in prg.SalesPrices)
{
item.PropertyChanged += SalePrice_PropertyChanged;
}
}
}
void GetPrograms()
{
var prgms = DataService.GetProgramList(SearchStringProgram);
ListPrograms=new ObservableCollection<Program>(prgms);
foreach (var prg in ListPrograms)
{
prg.SalesPrices.CollectionChanged += SalesPrices_CollectionChanged;
foreach (SalesPrice item in prg.SalesPrices)
{
item.PropertyChanged += SalePrice_PropertyChanged;
}
}
}