Я видел довольно много разных постов по этому поводу, но все еще не понимаю, как правильно это сделать.Я реализую RelayCommand и IRequireViewID для таких вещей, как вызов класса WindowsManager для закрытия окон из представления, когда ему не нужно знать, какое окно оно вызывает, и т. Д. Однако в подобных ситуациях я не уверен, как это сделать.реализовать все правильно.
Так что в основном у меня есть команда в viewModel, где вы нажимаете кнопку, и мне нужно сохранить данные в БД, как только это произойдет.Как у меня есть команда в представлении, но затем поместить логику для этого в ViewModel?IE, в основном ViewModel нужно знать, когда вызывается команда.Я имею в виду, что я всегда мог бы поместить статический метод в модель представления и вызвать его из представления, но я предполагаю, что, вероятно, это не очень хороший способ для его реализации, т.е. MyViewModel.RedValidation из представления.
Класс RelayCommand
public class RelayCommand : ICommand
{
private Action commandTask;
public RelayCommand(Action commandToRun)
{
commandTask = commandToRun;
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
commandTask();
}
}
Просмотр
public ICommand ValidateRed
{
get => new RelayCommand(RedValidation);
}
private void RedValidation()
{
//SAVE Data To DB <----This should be in the ViewModel though right?
}
XAML:
<Button Name="ValidateBtn" Style="{StaticResource mainButtons}" Content="Validate Email" Width="100"
HorizontalAlignment="Left" Command="{Binding ValidateRed}"/>