Как насчет этого:
Создание конвертера для логических значений:
class BooleanValueInverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (!(parameter is IValueConverter))
{
if (value is bool)
return !(bool)value;
else
return DependencyProperty.UnsetValue;
}
else
{
IValueConverter converter = (IValueConverter)parameter;
if (value is bool)
{
bool input = !(bool)value;
return converter.Convert(input, targetType, null, culture);
}
else
{
return DependencyProperty.UnsetValue;
}
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
в импорте xaml пространство имен, в котором реализован класс инвертора:
xmlns:util="clr-namespace:MyApp.Utilities"
В разделе ресурсов добавить ссылку на класс инвертора:
<util:BooleanValueInverter x:Key="Inverter" />
А потом просто используйте это так:
<TextBox Text="{Binding Path=TextProperty}" IsEnabled="{Binding SomeBoolPropertyToInvert, Converter={StaticResource Inverter}}"/>