2010-10-29 17 views
0

J'ai un contrôle Silverlight 3 où j'utilise un ItemsControl pour afficher une liste d'éléments. J'ai implémenté une zone de texte "filtre" ou "recherche" qui permet à l'utilisateur d'entrer un terme de recherche dans une zone de texte sur le contrôle qui limitera les éléments affichés dans ItemsControl à ceux contenant la chaîne entrée dans la zone de texte. J'ai été en mesure d'implémenter cette fonctionnalité, mais je voudrais l'améliorer en changeant la couleur du texte du terme de recherche dans le texte qui est affiché dans le contrôle des éléments. Par exemple, si l'utilisateur tape "foo" dans le champ de recherche, je voudrais filtrer les éléments dans ItemsControl (ce que je fais déjà) aux éléments qui contiennent "foo", et changer la couleur de fond de la sous-chaîne "foo" "où il se produit dans le ItemsControl.Passage d'une valeur TextBox à un IValueConverter utilisé par un autre contrôle de base de données dans Silverlight 3?

Idéalement, je voudrais implémenter un IValueConverter et transmettre la valeur dans le champ de recherche comme le paramètre au convertisseur. Le convertisseur pourrait alors chercher dans la valeur qui est convertie et changer la couleur d'arrière-plan de toutes les sous-chaînes "foo" (je ne sais pas comment je vais le faire pour le moment, quelque chose avec Inlines peut-être?). Il semble que les valeurs de paramètres passées aux convertisseurs de valeurs doivent être des ressources statiques. Est-il possible de transmettre une valeur non statique au convertisseur de valeur pour accomplir ce que j'essaie de faire? Y a-t-il une autre façon que je devrais faire à ce sujet qui n'utilise pas un IValueConverter?

Répondre

0

Rappelez-vous que je n'ai pas encore tout compris, mais je fais quelque chose de similaire dans mon application en utilisant Interaction.Behaviors. C'est un peu plus flexible qu'une solution de convertisseur linéaire. Dans ma solution, je l'utilise pour mettre en évidence des cellules et/ou du texte dans une grille en fonction de diverses conditions (par exemple, est-ce un élément critique? Faites-le rouge). Jetez un oeil à cet article de blog, il explique le processus assez bien, et devrait s'appliquer à plus d'un Telerik RadGridView. (Pour votre information, je pense que vous aurez besoin d'ajouter une référence à System.Windows.Interactivity)

Blog

+0

Je ne pense pas que cela fonctionnera dans mon cas. Pour un, ces règles de changement de couleur semblent être statiques, ce qui signifie qu'ils ne dépendent pas de l'état de tout autre contrôle. J'ai besoin d'une solution qui permette aux règles de conversion de dépendre du texte qui est entré dans une autre zone de texte. L'autre chose est que la grille de Telerik expose un événement "RowLoaded" pour lequel il n'y a aucun équivalent sur un ItemsControl. Cela semble plus "ASP.NET-ish" si vous savez ce que je veux dire (en utilisant un contrôle de databound et en gérant un événement pour formater les données comme chaque élément de la source de données est lié à une nouvelle ligne). – KOTJMF