Я пытаюсь привязать свою команду к кнопке, но ничего из того, что я делаю, не работает.
Я получил текстовый оконный текст, связанный через xaml, но когда я пытаюсь связать свою команду, Intellisense даже не видит ее, и команда не выполняется. Я пытался связать через code-behind также с тем же результатом.
Привязка данных моего окна выглядит следующим образом.
DataContext="{Binding Source={StaticResource mainViewModelLocator}, Path=Commands}"
mainViewModelLocator передает новый экземпляр класса Commands.
Класс команд:
public ICommand GradeCommand { get; set; }
public Commands()
{
LoadCommands();
}
private void LoadCommands()
{
GradeCommand = new CustomCommand(GradeClick, CanGradeClick);
}
private void GradeClick(object obj)
{
MessageBox.Show("Test");
}
private bool CanGradeClick(object obj)
{
return true;
}
и Icommand:
private Action<object> execute;
private Predicate<object> canExecute;
public CustomCommand(Action<object> execute, Predicate<object> canExecute)
{
this.execute = execute;
this.canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
bool b = canExecute == null ? true : canExecute(parameter);
return b;
}
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
public void Execute(object parameter)
{
execute(parameter);
}