Me gustaría mostrar los resultados de búsqueda dentro de WPF ItemsControl con los términos de consulta resaltados.Cómo mostrar resultados de búsqueda en un control de elementos de WPF con términos de consulta resaltados
El motor de búsqueda que utilizo, Lucene.Net con el plugin de resaltado, devuelve cadenas con los términos de la consulta remarcados así:
...these <Bold>results</Bold> were found to be statistically significant...
me puede dar instrucciones al plug-in de resaltado de utilizar cualquier conjunto de etiquetas de marcado para envolver un término de consulta. No estoy limitado a la etiqueta <Bold>
en el ejemplo anterior. Para WPF, probablemente haga estos elementos <Run/>
con un estilo adjunto.
El reto es tomar la cadena que me han dado y presentarla como si fuera "XAML real" dentro de la plantilla de datos que estoy usando para los resultados de búsqueda. En otras palabras, quiero ver algo como esto:
... estos resultados fueron, fueron hallados lleguen a ser competentes ...
Pero estoy luchando con la forma de combinar enlace de datos con representación dinámica de una cadena XAML dentro de la plantilla de datos. ¿Cuál es el mejor enfoque aquí?
- Use un UserControl para mostrar cada resultado de búsqueda y llame al
XamlReader.Load()
desde el código subyacente? - ¿Construye un FlowDocument que contiene las cadenas de resultados de búsqueda y muestra los resultados con un FlowDocumentScrollViewer?
- ¿Algo más enteramente ...?
Mi pregunta probablemente no era lo suficientemente clara. La parte difícil es que tengo que cambiar la cadena en XAML en tiempo de ejecución, no en tiempo de compilación. – dthrasher
Tal vez me perdí algo pero me parece factible construir una cadena XAML como en mi ejemplo (con algunas expresiones regulares) y utilizar su primer enfoque. La solución que sugerí fue construir un TextBlock en tiempo de ejecución y completar su colección Inlines con Runs. Agregar un estilo a Runs resaltado es una solución para reemplazar FontWeight = "Bold". – Mart
Gracias, @Mart. Tu sugerencia me puso en el camino correcto. Mi respuesta describe el enfoque que utilicé. – dthrasher