Навигация в xamarin forms

178
26 июня 2019, 23:30

Вопрос заключается в следующем. Создаю приложение на xamarin forms, используя паттерн mvvm. В приложении есть 3 страницы: Главная->Список_работников->Работник. На странице со списком работников есть возможность добавления новых работников. Стартовая страница определена как MainPage = new NavigationPage(new StartPage()). На StartPage есть кнопка, по клику которой осуществляется переход к списку работников:

async void toEmpList(object sender, EventArgs e) { await Navigation.PushAsync(new Page2()); }

Так вот суть проблемы: я перехожу со StartPage на Page2 (список работников), а затем добавляю туда работников. Но после того, как я вернусь на StartPage, а затем повторно зайду на Page2, то список будет пустым. (как я понимаю, из-за того, что при навигации я пересоздаю Page2 в методе PushAsync).

Буду очень благодарен, если кто подскажет, как решить эту проблему.

Вот код EmployeesListViewModal

public class EmployeesListViewModel : INotifyPropertyChanged
    {
        public ObservableCollection<EmployeeViewModel> Employees { get; set; }
        public event PropertyChangedEventHandler PropertyChanged;
        public ICommand CreateEmployeeCommand { protected set; get; }
        public ICommand DeleteEmployeeCommand { protected set; get; }
        public ICommand SaveEmployeeCommand { protected set; get; }
        public ICommand BackCommand { protected set; get; }
        EmployeeViewModel selectedEmployee;
        public INavigation Navigation { get; set; }
        public EmployeesListViewModel()
        {
            Employees = new ObservableCollection<EmployeeViewModel>();
            CreateEmployeeCommand = new Command(CreateEmployee);
            DeleteEmployeeCommand = new Command(DeleteEmployee);
            SaveEmployeeCommand = new Command(SaveEmployee);
            BackCommand = new Command(Back);
        }
        public EmployeeViewModel SelectedEmployee
        {
            get { return selectedEmployee; }
            set
            {
                if (selectedEmployee != value)
                {
                    EmployeeViewModel tempEmployee = value;
                    selectedEmployee = null;
                    OnPropertyChanged("SelectedEmployee");
                    Navigation.PushAsync(new Page1(tempEmployee));
                }
            }
        }
        protected void OnPropertyChanged(string propName)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propName));
        }
        private void CreateEmployee()
        {
            Navigation.PushAsync(new Page1(new EmployeeViewModel() { ListViewModel = this }));
        }
        private void Back()
        {
            Navigation.PopAsync();
        }
        private void SaveEmployee(object employeeObject)
        {
            EmployeeViewModel employee = employeeObject as EmployeeViewModel;
            if (employee != null && employee.IsValid)
            {
                Employees.Add(employee);
            }
            Back();
        }
        private void DeleteEmployee(object employeeObject)
        {
            EmployeeViewModel employee = employeeObject as EmployeeViewModel;
            if (employee != null)
            {
                Employees.Remove(employee);
            }
            Back();
        }
    }
READ ALSO
selenium web driver C# ожидание

selenium web driver C# ожидание

надо сделать ожидание пока элемент прогрузится но выдает ошибку на drManage()

131
Два массива, второй зависим от первого

Два массива, второй зависим от первого

У меня есть массив int [] lvl, который можно менять количество элементов и значения через Inspector в ЮнитиНужно создать второй массив int[] keys, Length которого...

135
Include class oop php

Include class oop php

Мне не совсем понятен один момент с ООПЕсли я использую абстрактный класс, и пытаюсь в него подгрузить сторонний класс (не extends), находящийся...

142