Vorrei visualizzare i risultati di ricerca all'interno di un oggetto WPF ItemsControl con i termini della query evidenziati.Come visualizzare i risultati di ricerca in un controllo di elementi WPF con termini di query evidenziati
Il motore di ricerca che uso, Lucene.Net con il plugin evidenziatore, restituisce le stringhe con i termini della query marcato in questo modo:
...these <Bold>results</Bold> were found to be statistically significant...
mi può istruire il plugin Highlighter di utilizzare qualsiasi set di tag di markup per avvolgere una termine della query. Non sono limitato al tag <Bold>
nell'esempio sopra. Per WPF, probabilmente creerò questi elementi <Run/>
con uno stile allegato.
La sfida è prendere la stringa che ho ricevuto e renderla come se fosse "XAML reale" all'interno del datatemplate che sto usando per i risultati di ricerca. In altre parole, voglio vedere qualcosa di simile:
... questi risultati sono stati sono risultate essere statisticamente significativo ...
Ma sto lottando con il modo di coniugare associazione dati con rendering dinamico di una stringa XAML all'interno del datatemplate. Qual è l'approccio migliore qui?
- Utilizzare un controllo utente per visualizzare ogni risultato di ricerca e chiamare
XamlReader.Load()
dal codebehind? - Costruire un oggetto FlowDocument contenente le stringhe dei risultati di ricerca e visualizzare i risultati con un FlowDocumentScrollViewer?
- Qualcos'altro interamente ...?
La mia domanda probabilmente non era abbastanza chiara. La parte difficile è che ho bisogno di cambiare la stringa in XAML in fase di esecuzione, non in fase di compilazione. – dthrasher
Forse mi sono perso qualcosa, ma mi sembra possibile costruire una stringa XAML come nel mio esempio (con alcune espressioni regolari) e utilizzare il tuo primo approccio. La soluzione che ho suggerito era di creare un TextBlock in fase di runtime e compilare la sua collezione Inlines con Runs. Aggiungere uno stile alle corse evidenziate è una soluzione per sostituire FontWeight = "Grassetto". – Mart
Grazie, @Mart. Il tuo suggerimento mi ha messo sulla strada giusta. La mia risposta descrive l'approccio che ho usato. – dthrasher