Я пытаюсь сохранить новые данные формы обратно в базу данных, используя шаблон 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;
}