Я новичок в WPF и особенно с командами, и теперь у меня есть задача создать RelayCommand для кнопки. Я должен узнать, что мне нужно отделить логику от пользовательского интерфейса. У меня просто есть 2 текстовых поля и текстовый блок, пользователь записывает имена в полях и нажимает кнопку, чтобы отобразить их в текстовом блоке. Моя задача - прочитать о RelayCommand и реализовать его, но я действительно не понимаю, как это работает. У меня есть метод UpdateName в моем классе Logic.cs, как его использовать в RelayCommand? Все, что у меня есть, это RelayCommand.cs с реализованным интерфейсом ICommand. Это код, который я нашел в Интернете, но я действительно не знаю, что положить туда.RelayCommand для обновления TextBox
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
private Action methodToExecute;
private Func<bool> canExecuteEvaluator;
public RelayCommand(Action methodToExecute, Func<bool> canExecuteEvaluator)
{
this.methodToExecute = methodToExecute;
this.canExecuteEvaluator = canExecuteEvaluator;
}
public RelayCommand(Action methodToExecute)
: this(methodToExecute, null)
{
}
public bool CanExecute(object parameter)
{
if (this.canExecuteEvaluator == null)
{
return true;
}
else
{
bool result = this.canExecuteEvaluator.Invoke();
return result;
}
}
public void Execute(object parameter)
{
this.methodToExecute.Invoke();
}
Да, DataContext установлен в класс Logic. Я добавил свойство, но где именно я инициализирую команду? Где конструктор viewmodel, в Logic.cs? Извините, я на самом деле новичок в этом. Я понимаю, что обязательная часть. – tweedledum11
Обновлен ответ. –
У меня получилось, я инициализировал команду в контрукторе Logic, UpdateText() вы имеете в виду мой собственный метод UpdateName? Моя Visual Studio заставила меня изменить это на следующее: UpdateTextCommand = new RelayCommand (delegate (object obj) {UpdateName();}, null); Почему это? Один раньше не работал. – tweedledum11