2010-11-04 6 views
2

J'ai une vue arborescente WPF utilisée pour afficher une structure de fichier. Chaque arbre a une collection d'énumérations pour déterminer le statut personnalisé de l'élément. C'EST À DIRE. ObservableCollection<enumType> statusCollection;WPF Binding Converter pour la collection

J'ai plusieurs ellipses qui apparaissent lorsqu'un treeitem a un de ces statuts ... quelque chose comme ceci:

<Ellipse Margin="3,0" Visibility="{Binding StatusCollection, Converter={StaticResource VisibilityConverter}}" StrokeThickness="1" Stroke="Black" Width="12" Height="12" Fill="Red" /> 

Est-il possible que je peux utiliser le même convertisseur pour plusieurs points de suspension pour vérifier les un statut spécifique ... via un argument peut-être? En ce moment dans le convertisseur, je boucle la collection à la recherche de l'énumération spécifique ... ce faisant, je devrais créer un nouveau convertisseur pour chaque énumération créée, ce qui n'est pas idéal.

Mieux encore, comment procéder pour créer dynamiquement des Ellipses pour chaque statut dans un treeviewitem?

Répondre

4

Vous pouvez ajouter un ConverterParameter au Binding:

Visibility="{Binding StatusCollection, 
     Converter={StaticResource VisibilityConverter}, 
     ConverterParameter={x:Static local:MyEnumType.EnumValue}}" 

Ce sera alors passé dans votre IValueConverter comme parameter (troisième paramètre) dans

Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 

Vous pouvez ensuite utiliser le paramètre dans votre convertisseur mais vous avez besoin.