CanExecute
в MVVM для управления авторизацией, но люди используют его для проверки.Лучший способ - это сделать в XAML.Вам понадобится конвертер, если у вас есть несколько полей для проверки (InverseAndBooleansToBooleanConverter
- моя реализация для нескольких логических значений).Вот как это сделать:
код XAML (извините, если код XAML действительно появляется, потому что я мог его отобразить, даже если попытался):
<Button Name="Button_Test" Content="Test">
<Button.IsEnabled>
<MultiBinding Converter="{StaticResource InverseAndBooleansToBooleanConverter}" Mode="TwoWay">
<Binding ElementName="TextBox_Field1" Path="(Validation.HasError)" />
<Binding ElementName="TextBox_Field2" Path="(Validation.HasError)" />
<Binding ElementName="TextBox_Field3" Path="(Validation.HasError)" />
</MultiBinding>
</Button.IsEnabled>
</Button>
Преобразователь
public class InverseAndBooleansToBooleanConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values.LongLength > 0)
{
foreach (var value in values)
{
if (value is bool && (bool)value)
{
return false;
}
}
}
return true;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}