Программный поиск текста в документах WPF

DocumentViewer предоставляет возможность пользователю поиска текста в документе. Но что делать, если поиск текста нужно выполнить программно?

Нам поможет класс DocumentAutomationPeer из System.Windows.Automation.Peers. Extension-метод для любого документа, отображаемого в DocumentViewer (и остальных просмотровщиках, включенных в состав WPF) приведён ниже.

public static class DocumentHelper
{
  public static void FindText(this FrameworkContentElement document, string text, bool backward = false, bool ignoreCase = true)
  {
    var documentAutomationPeer = new DocumentAutomationPeer(document);
    var textProvider = (ITextProvider)documentAutomationPeer.GetPattern(PatternInterface.Text);
    if (textProvider != null)
    {
      var range = textProvider.DocumentRange;
      if (range != null)
      {
        var textRangeProvider = range.FindText(text, false, true);
        textRangeProvider.ScrollIntoView(true);
      }
    }
  }
}


* This source code was highlighted with Source Code Highlighter.


Пользуясь случаем, передаю привет Alex Look. Спасибо тебе за идею для статьи.

Комментариев нет:

Отправить комментарий