2010-10-07 21 views
0

Je lie la propriété Brush d'une TextBox à une propriété de dépendance IsValid dans un UserControl avec un BoolToBrushConverter. Mon IsValid aurait besoin de 4 états car j'ai besoin de 4 brosses différentes pour revenir du convertisseur. Y a-t-il une autre façon d'utiliser les chaînes? au lieu de bool, cela pourrait-il fonctionner?WPF BoolToBrushConverter avec 4 valeurs et 4 pinceaux pour revenir?

Répondre

1

Bien sûr. Vous pouvez convertir tout ce que vous voulez en ce que vous voulez. Vous avez juste besoin de mettre en œuvre la façon comment il est converti.

Toutefois, si le nombre d'états est limité à 4, je suggère d'utiliser un Enum au lieu de cordes, car cela rend plus sûr en ce qui concerne refactoring etc.

Quelque chose comme ça devrait fonctionner:

internal enum State 
{ 
    State1, State2, State3, State4 
} 

// ... 

public void Convert(object value, ...) 
{ 
    if (value is State) 
    { 
     State state = (State)value; 
     switch(state) 
     { 
      case State.State1: 
       return myBrush1; 
      case State.State2: 
       return myBrush2; 
      case State.State3: 
       return myBrush3; 
      case State.State4: 
       return myBrush4; 
     } 
    } 

    return defaultBrush; 
} 

BTW: Selon le scénario, il peut être préférable d'utiliser des déclencheurs, mais ce n'est pas toujours possible.