簡體   English   中英

CollectionView 未更新

[英]CollectionView not updating

我在視圖中設置了一個 CollectionView:

<CollectionView ItemsSource="{Binding Staffmembers}">
   <CollectionView.ItemTemplate>
                 <DataTemplate >
                     ...
                 </DataTemplate>
   </CollectionView.ItemTemplate>
</CollectionView>

ViewModel 將 Staffmembers ItemsSource 定義為一個可觀察的集合:

        public StaffViewModel()
        {
            Staffmembers = new ObservableCollection<Staff>(App.StaffRepo.GetStaff());

        }
        [ObservableProperty]
        ObservableCollection<Staff> staffmembers;

當我向此集合添加新項目時,它應該更新

        public void AddStaff()
        {
            Staffmember.Name= name;
            Staffmember.Surname= surname;
            Staffmember.Role= role;


            try
            {
                App.StaffRepo.SaveStaff(Staffmember);
                Staffmembers = new ObservableCollection<Staff>(App.StaffRepo.GetStaff());
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }

            Shell.Current.GoToAsync("//Staff");
        }

問題是當我添加到集合中時,更改不會反映在 CollectionView 中。 如果我重新加載集合,更改會顯示出來,但我希望它立即反映。 我已經在教程中看到了這一點,但我只是不確定我錯過了什么

問題是您在AddStaff方法中執行此操作: Staffmembers = new ObservableCollection<Staff>(App.StaffRepo.GetStaff()); .

一旦你創建了一個新的ObservableCollection ,你應該清除它並重新填充它(或者只添加一條記錄,但是你想添加新的東西)。 如果您創建一個新實例,它將失去數據綁定連接並停止更新 UI。

所以把它改成這樣:

public void AddStaff()
{
    Staffmember.Name= name;
    Staffmember.Surname= surname;
    Staffmember.Role= role;


    try
    {
        App.StaffRepo.SaveStaff(Staffmember);
        Staffmembers.Clear();

        foreach(var member in App.StaffRepo.GetStaff())
            Staffmembers.Add(member);
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex.Message);
    }

    Shell.Current.GoToAsync("//Staff");
}

下面的這段代碼可能會導致ObservableCollection不起作用。 您應該直接將數據添加到ObservableCollection

App.StaffRepo.SaveStaff(Staffmember);
Staffmembers = new ObservableCollection<Staff>(App.StaffRepo.GetStaff());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM