Я относительно новичок в 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");
}
}
Любая помощь будет принята с благодарностью !!