2009-07-29 4 views
4

Cela consiste essentiellement à implémenter la recherche/recherche dans une fenêtre WPF ou un contrôle utilisateur. Supposons que vous ayez une fenêtre WPF avec un texte dynamique en lecture seule sur textblock, d'autres dans une listbox, d'autres dans treeview, d'autres dans des blocs de texte, etc.Rechercher et mettre en surbrillance n'importe quel texte sur une fenêtre WPF avec de nombreux types de contrôles

L'utilisateur doit pouvoir saisir un terme de recherche dans une zone de texte sur le haut et être en mesure de le voir mis en évidence où et dans quel contrôle le texte apparaît dans la fenêtre. Et non, cette page n'a rien à voir avec FlowDocuments et autres, donc ne peut pas utiliser hors de la boîte FlowDocumentReader. Appelez cela «recherche de texte de contrôle» et mettez en surbrillance le terme de recherche comme Google Chrome Browser pour une page Web.

Voici SO fils pourraient être utiles, mais pas sûr si je peux obtenir ce qui précède (je suis en train de mettre quelque chose ensemble)

  1. Find all controls in WPF Window by type
  2. WPF Listbox highlight part of ListBoxItem element

Il y a cet article, qui est également utile mais fonctionne avec des documents et ne contrôle pas

  1. Search and highlight any text on WPF rendered page

Répondre

3

D'accord, j'ai l'impression d'avoir trouvé un lien qui ressemble à ce que je recherchais.

Search and Highlight Text in an Arbitrary Visual Tree

Je vais passer par cela, va revenir et mettre à jour si elle est la solution complète au problème ci-dessus

Mise à jour 1: D'accord, cela fonctionne vraiment, ce qui précède lien a du code qui résout en fait ce problème, super travail là Kent !!! - Il met en surbrillance tout le texte de recherche avec du jaune en une fois, mais une chose qui manque est la mise en surbrillance de la navigation, comme next-> next. Je prévois de travailler dessus et je peux poster mes mises à jour ici, pour que ça aide les autres.

Mise à jour 2: D'accord, il y a une autre prise avec cette solution. Les rectangles en surbrillance sont dessinés sur les coordonnées de l'écran. Donc, si vous avez une longue liste d'éléments, et que vous faites défiler, les rectangles en surbrillance restent collés aux coches d'écran, par opposition aux blocs de texte eux-mêmes.

Maintenant, mon coéquipier et moi allons travailler sur une solution différente. Gardera ce fil posté.

+0

Merci de poster ceci ... J'étais sur le point de me lancer moi-même. Maintenant je ne dois pas! –

+0

Sûr heureux que cela ait aidé – Vin

+0

Avez-vous toujours la solution de téléchargement de cet article? – Gman

Questions connexes