[英]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.