2009-07-07 7 views

Répondre

17

Vous avez besoin d'un convertisseur personnalisé. Jetez un oeil à article

1

Quelque chose a peut-être été ajouté dans le Service Pack 1, mais la façon dont j'ai réalisé ceci dans le passé est avec un ValueConvertor qui convertit la valeur dans un booléen.

Dans votre exemple, votre convertisseur renvoie true si la valeur était> 25, false dans le cas contraire. Si cela n'a pas de sens, je peux mettre un exemple :-)

4

Pas sans code derrière. La pratique habituelle est la suivante:

  • Lorsque vous travaillez avec des éléments d'interface utilisateur, créez un IValueConverter et liez-le à la propriété à l'aide du convertisseur.
  • Lorsque vous travaillez avec des données liées, créez une propriété bool sur vos données et déclenchez à partir de cette propriété.
+0

J'aime l'idée d'utiliser un convertisseur même avec des données liées. Lorsque vous utilisez le modèle MVVM, il aide à garder le code de vue hors du viewmodel. –

29

Vous pouvez utiliser un déclencheur de données et définir la liaison RelativeSource sur Self. Les déclencheurs de données permettent la liaison et les liaisons vous permettent d'avoir des convertisseurs.

Exemple:

<Button Content="I change colour depending on my width for some reason"> 
     <Button.Triggers> 
      <DataTrigger 
       Binding="{Binding 
       Path=Width, 
       RelativeSource={RelativeSource Self}, 
       Converter={StaticResource isLessThanConverter}, 
       ConverterParameter=50}" 
       Value="True"> 
       <Setter Property="Button.Background" Value="Red" /> 
      DataTrigger> 
     Button.Triggers> 
    Button> 

Reference

+3

+1 pour signaler l'approche isLessThanConverter avec ConverterParameter. – cplotts

+2

Dans la liaison, 'ActualWidth' devrait être utilisé à la place parce que la propriété' Width' est 'NaN' si elle n'est pas explicitement définie. – pogosama

Questions connexes