Хотелось бы, чтобы я проголосовал против вас, потому что я уверен, что это работает, но ответ ниже был тем, который работал для меня.
ановил свойство 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;
}