2009-08-23 1 views
14

PS. J'ai posé la question sachant que je peux créer un convertisseur booléen comme ceci:Opérateur XAML 'NOT'? Y a-t-il un moyen de le faire avec xaml pur, ou je devrais le faire via le code?

<ValueConversion(GetType(Boolean), GetType(Boolean))> 
Public Class BooleanFlagSwitchConverter : Implements IValueConverter 

    Public Function Convert(value As Object, targetType As Type, 
      parameter As Object, culture As CultureInfo) As Object 
      Implements IValueConverter.Convert 
     Return Not value 
    End Function 

    Public Function ConvertBack(value As Object, targetType As Type, 
      parameter As Object, ByVal culture As CultureInfo) As Object 
      Implements IValueConverter.ConvertBack 
     Return Not value 
    End Function 

End Class 

[ValueConversion(typeof(bool), typeof(bool))] 
public class BooleanFlagSwitchConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, 
     CultureInfo culture) 
    { 
     return !(bool)value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, 
     CultureInfo culture) 
    { 
     return !(bool)value; 
    } 
} 
+0

Je pense que cela est préférable

Répondre

12

Il n'existe pas. Regardez la classe properties on the Binding. Il n'y a rien, sauf un convertisseur qui fera ce que vous voulez.

2

Je recommanderais d'utiliser https://quickconverter.codeplex.com/

inverseuses un booléen est donc aussi simple que: <Button IsEnabled="{qc:Binding '!$P', P={Binding IsDisabled)}" />

qui accélère le temps normalement nécessaire pour écrire des convertisseurs.

+0

La liaison bidirectionnelle fonctionne-t-elle pour cette solution? –

+1

Oui, selon la documentation du site que j'ai lié ci-dessus. Exemple: 'Height =" {qc: Liaison '$ P * 10', ConvertBack = '$ valeur * 0.1', P = {Largeur de test de liaison, Mode = TwoWay}} "' – Noxxys

Questions connexes