Хотелось бы, чтобы я проголосовал против вас, потому что я уверен, что это работает, но ответ ниже был тем, который работал для меня.

ановил свойство bool и связал его с IsEnabled в xaml, но метод ICommand CanExecute переопределяет IsEnabled в xaml, поэтому мое свойство bool неэффективно.

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

Это сетка, которая отображает 3 разные кнопки для каждой строки, и каждая кнопка переходит на новый экран xaml. Если в строке нет данных для конкретного условия, кнопка включена, то эту кнопку необходимо отключить.

Как мне настроить это так, чтобы кнопки были отключены при определенных условиях?

Пользовательская команда:

public class CustomCommand : ICommand
{

    private Action<object> execute;
    private Predicate<object> canExecute;
    public CustomCommand(Action<object> execute, Predicate<object> canExecute)
    {
        this.execute = execute;
        this.canExecute = canExecute;

    }

    public event EventHandler CanExecuteChanged
    {
        add
        {

        }
        remove
        {

        }
    }

    public bool CanExecute(object parameter)
    {
        //throw new NotImplementedException();
        bool b = canExecute == null ? true : canExecute(parameter);
        return b;
    }

    public void Execute(object parameter)
    {
        execute(parameter);
    }
}

XAML

<DataTemplate>
                                <Button Command="{Binding Source={StaticResource VM},
                                Path=Command}" CommandParameter="{Binding}" >
                                    <SymbolIcon Symbol="Edit" Foreground="AliceBlue" />
                                </Button>
</DataTemplate>

CanExecute в ВМ

 private bool CanGetDetails(object obj)
    {
        return true;
    }

Ответы на вопрос(2)

Ваш ответ на вопрос