151 votes

DataTrigger où la valeur n'est PAS nulle ?

Je sais que je peux faire un setter qui vérifie si une valeur est NULL et faire quelque chose. Exemple :

<TextBlock>
  <TextBlock.Style>
    <Style>
      <Style.Triggers>
        <DataTrigger Binding="{Binding SomeField}" Value="{x:Null}">
          <Setter Property="TextBlock.Text" Value="It's NULL Baby!" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </TextBlock.Style>
</TextBlock>

Mais comment puis-je vérifier une valeur "non"... comme dans "NOT NULL", ou "NOT = 3" ? Est-ce possible en XAML ?

Résultats : Merci pour vos réponses... Je savais que je pouvais faire un convertisseur de valeur (ce qui signifie que je devrais aller dans le code, et ce ne serait pas du pur XAML comme je l'espérais). Cependant, cela répond à la question qu'effectivement "non" vous ne pouvez pas le faire en XAML pur. La réponse choisie, cependant, montre probablement la meilleure façon de créer ce genre de fonctionnalité. Bonne trouvaille.

2voto

abatishchev Points 42425

Convertisseur :

public class NullableToVisibilityConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value == null ? Visibility.Collapsed : Visibility.Visible;
    }
}

Reliure :

Visibility="{Binding PropertyToBind, Converter={StaticResource nullableToVisibilityConverter}}"

2voto

Butsaty Points 328

Vous pouvez utiliser un convertisseur ou créer une nouvelle propriété dans votre ViewModel comme cela :

public bool CanDoIt
{
    get
    {
        return !string.IsNullOrEmpty(SomeField);
    }
}

et l'utiliser :

<DataTrigger Binding="{Binding SomeField}" Value="{Binding CanDoIt}">

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X