Puede usar un 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;
}
}
Entonces será la configuración de su unión como:
<TextBlock Text="{Binding Path=IsAdmin, Converter={StaticResource boolConvert}}" />
Añadir un recurso (por lo general en el control de usuario/ventana), así:
<local:InvertBooleanConverter x:Key="boolConvert"/>
Editar en respuesta para comentar:
Si quieres evite un convertidor de valor por algún motivo (aunque creo que es el lugar más apropiado), puede realizar la conversión directamente en su ViewModel. Sólo tiene que añadir una propiedad como:
public bool IsRegularUser
{
get { return !this.IsAdmin; }
}
Si lo hace, sin embargo, asegúrese de que su IsAdmin
colocador propiedad también provoca un evento PropertyChanged
para "IsRegularUser", así como "IsAdmin", por lo que la interfaz de usuario se actualiza en consecuencia.
En realidad debería haber mencionado sin utilizar ValueConverter – azamsharp
¿No crees que es demasiado trabajo para una simple operación de negación! – azamsharp
@azamsharp: He editado para darle otra opción, pero no, no, principalmente porque es un código ** reutilizable. Una vez que crea el convertidor, puede usarlo para TODAS sus conversiones de! Bool, en cualquier parte de su base de código. –