Maui ObservableCollection 在添加新项目时不更新 UI

问题描述 投票:0回答:1

我正在使用 CommunityToolkit.Mvvm,但 ObservableCollection 存在一些问题。 我有一些像这样声明的视图模型:

public partial class LabourListViewModel: ObservableObject
{
    [ObservableProperty] 
    private ObservableCollection<LabourJson> _labourList = [];

    [RelayCommand]
    public void LabourAdded( LabourJson labour )
    {
        LabourList.Insert( 0, labour );
    }
}

问题是当调用方法LabourAdded时,UI不会更新。我认为 ObservableProperty 应该观察变化并相应地更新 UI?

如果插入后我确实像下面那样,那么 UI 就会更新,但为什么我每次都需要重新创建列表?

LabourList = new ObservableCollection<LabourJson>( LabourList.ToList() );
maui observablecollection
1个回答
0
投票

ObservableCollection
列表应定义如下:

ObservableCollection<LabourJson> LabourList {get;} = new ObservableCollection<LabourJson> LabourList

即没有必要应用

[ObservableProperty]
更改的属性,并且您不应该实现 setter。
ObservableCollection
由初始化程序初始化一次,从此时起,每当您从集合中添加、更新或删除时,
ObservableCollection
都会自动广播
CollectionChanged
事件。

通常,此类集合的消费者是

ListView
CollectionView
,他们知道观看
CollectionChanged
事件来更新其 UI。

© www.soinside.com 2019 - 2024. All rights reserved.