Сохранить новые данные формы в базе данных - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь сохранить новые данные формы обратно в базу данных, используя шаблон MVVM.У меня есть модель с именем Person, и в моем PersonViewModel я могу успешно добавить значения в мою форму, выполнив это

    public void LoadPerson()
    {
        Person p = new Person();
        p.LastName = "Servo";
        p.FirstName = "Tommy";
        p.Address = "123 Main St";
        p.City = "Somewhere";
        p.State = "MI";
        p.ZipCode = "55555";
        CurrentPerson = p;
    }

Остальная часть моей ViewModel выглядит следующим образом

    public PersonViewModel()
    {
        LoadCommand = new RelayCommand(LoadPerson);
        SaveCommand = new RelayCommand(SavePerson);
        OpenCommand = new RelayCommand(OpenPerson);
        EncryptCommand = new RelayCommand(EncryptPerson);
        DecryptCommand = new RelayCommand(DecryptPerson);
    }

    private Person currentPerson;
    public Person CurrentPerson
    {
        get { return currentPerson; }
        set
        {
            if (value != currentPerson)
            {
                currentPerson = value;
                RaisePropertyChanged();
            }
        }
    }

    public ICommand DecryptCommand { get; private set; }
    public ICommand EncryptCommand { get; private set; }
    public ICommand LoadCommand { get; private set; }
    public ICommand OpenCommand { get; private set; }
    public ICommand SaveCommand { get; private set; }

Так что с этимЯ могу получить данные в форму с помощью LoadCommand.Я могу успешно сохранить изменения обратно в базу данных, если я изменю любые данные формы с помощью SaveCommand (когда я использую LoadCommand).Что я не могу сделать, так это сохранить данные, когда в форме нет данных для начала.

Редактировать Чтобы пояснить, я имею в виду, что когда я заполняю поле формы полем вручную после того, как он открывает введенные мной данные, они не сохраняются.Так как я могу сохранить измененные данные (LoadCommand для вставки фиктивных данных) после заполнения формы.Я уверен, что это потому, что я не делаю правильную вещь, чтобы связать текстовые поля с ViewModel, когда форма открывается впервые.

LoadCommand создает ссылку, поэтому эти данные сохраняются.Я думаю, в частности, моя проблема в том, что SaveCommand не создает ссылку, если она не создана с помощью LoadCommand. Конец редактирования

Я проверяю нулевой CurrentPerson, чтобы я мог заполнить его, когда я не загружаю его, используя LoadCommand, но я не могу понять, как его гидрировать безначальная загрузка.Как сделать Currentperson равным данным формы в блоке кода ниже?(при условии, что это то, где я это делаю)

            if (CurrentPerson == null)
            {
                //Person person = CurrentPerson;
                //CurrentPerson = this.currentPerson;
                //string fn = CurrentPerson.FirstName;
                //Console.WriteLine(fn);
                //Person person = new Person();
                //person.FirstName =  ;
                //CurrentPerson = person;
            }

1 Ответ

0 голосов
/ 21 марта 2019

Ответ был смущающе прост. Мне нужно было добавить следующее в конструктор

        Person p = new Person();
        CurrentPerson = p;
...