Правильный способ обязательной команды - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь привязать свою команду к кнопке, но ничего из того, что я делаю, не работает.

Я получил текстовый оконный текст, связанный через 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);
        }

1 Ответ

0 голосов
/ 29 июня 2019

Я понял это. Моя привязка DataContext не работает. Я изменил это на:

xmlns:vm="clr-namespace:ProgramName.ViewModel"
    <Window.DataContext>
        <vm:Commands/>
    </Window.DataContext>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...