Привязать пользовательский ввод из текстовых полей к коллекции объектов через TabControl - PullRequest
0 голосов
/ 28 мая 2019

Я относительно новичок в WPF и архитектуре MVVM, поэтому у меня возникли проблемы с этим сценарием связывания данных.

В настоящее время я создаю приложение, которое позволяет пользователям создавать новых людей с помощью TabControl. Когда пользователь создает новую вкладку, он автоматически заполняется пользовательскими полями данных, такими как Имя, Фамилия, Возраст и т. Д. Затем мне нужно взять эту информацию, вставить ее в ObservableCollection и использовать ее для заполнения отчета WPF ( с которыми у меня нет проблем). Я использую элемент управления вкладками, чтобы пользователь мог перемещаться и редактировать данные по мере необходимости.

Моя проблема в том, что только первый элемент в элементе управления вкладками фактически заполняет коллекцию ObservableCollection. У меня есть кнопка, которая создает новую вкладку, заполняет содержимое с помощью UserControl. Я использовал SelectedPerson, чтобы вернуться в список и получить доступ к Person, который соответствует TabIndex, который просматривается в данный момент, чтобы я мог изменить / добавить / обновить информацию о строке.

Вот мой код XAML:

<TextBox ... Text="{Binding SelectedPerson.FirstName}"/>
<TabControl ... SelectedIndex="{Binding PersonIndex} ... />

Мой класс по уходу выглядит следующим образом:

public class Person{
   public string FirstName { get; set; }
   public string LastName { get; set; }
}

А мой код на C # выглядит так:

private int _PersonIndex;
private Person _SelectedPerson;
private ObservableCollection<Person> Persons = new ObservableCollection<Persons>();

public void AddPerson (Person p){
   SelectedPerson = p;
   Persons.Add(p);
   PersonIndex = Persons.Count - 1;
}

public Person SelectedPerson {
   get {
      return _SelectedPerson;
   }
   set {
      _SelectedPerson = value;
      OnPropertyChanged("SelectedPerson");
   }
}

public int PersonIndex{
   get {
      return _PersonIndex;
   }
   set {
      SelectedPerson = Persons[value];
      OnPropertyChanged("PersonIndex");
   }
}

Любая помощь будет принята с благодарностью !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...