Вы можете использовать IValueConverter
.
[ValueConversion(typeof(bool), typeof(bool))]
public class InvertBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool original = (bool)value;
return !original;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
bool original = (bool)value;
return !original;
}
}
Тогда вы настроите привязку следующим образом:
<TextBlock Text="{Binding Path=IsAdmin, Converter={StaticResource boolConvert}}" />
Добавьте ресурс (обычно в вашем UserControl / Window) примерно так:
<local:InvertBooleanConverter x:Key="boolConvert"/>
Редактировать в ответ на комментарий:
Если по какой-то причине вы хотите избежать преобразователя значений (хотя я считаю, что это наиболее подходящее место), вы можете выполнить преобразование непосредственно в своей модели представления. Просто добавьте свойство как:
public bool IsRegularUser
{
get { return !this.IsAdmin; }
}
Однако, если вы сделаете это, убедитесь, что ваш установщик свойства IsAdmin
также вызывает событие PropertyChanged
для IsRegularUser и IsAdmin, поэтому пользовательский интерфейс обновляется соответствующим образом.