Добавление элементов в коллекцию ObservableCollection означает изменение резервного поля в той же модели представления

#c# #winui-3

Вопрос:

Я экспериментировал с Winui 3 и заметил проблему, в которой я не уверен, является ли это моей собственной ошибкой или это какая-то ошибка. У меня есть модель представления, которая при навигации также передает объект модели в модель представления, которая затем помещает данные модели в резервные поля.

В то же время ViewModel запрашивает базу данных, запускает ее через foreach и добавляет в коллекцию ObservableCollection. Что я обнаружил, в первом цикле foreach он заменяет значение резервного поля UsersID идентификатором первого элемента в цикле foreach.

 public async void Initialize(object queryObject) {  Model = (InspectionModel)queryObject;  var users = await Task.Run(App.Repository.Users.GetCertifiersAsync);   foreach (var item in users)  {  Certifiers.Add(item);  } }  public ObservableCollectionlt;UsersModelgt; Certifiers = new ObservableCollectionlt;UsersModelgt;();  public int UsersID {  get { return Model.UsersID; }  set  {  Model.UsersID = value;  OnPropertyChanged(nameof(UsersID));  IsModified = true;  } }  

Certifiers является ItemsSource для выпадающего списка и UsersID является SelectedIndex .

Комментарии:

1. Вы очищаете Certifiers , прежде чем добавлять новые элементы?

2. @mm8 я только что попробовал, Certifiers.Clear(); но это ничего не изменило. Когда я прохожу через код UsersID , он устанавливается на то, каким он должен быть при попадании в Model = (InspectionModel)queryObject; строку, и остается правильным значением до тех пор, пока не завершится первый цикл цикла foreach.

3. Пожалуйста, поделитесь кодом модели проверки.