Если вы собираетесь использовать wpf для какой-либо существенной работы, вы должны использовать MVVM.Работать напрямую с элементами управления можно для очень простых вещей, но сложность возрастает очень быстро.Вместо этого вам следует связать данные и шаблоны в элементы управления.
Именно так должен использоваться WPF.
Работать с базовыми данными, а не с элементами управления.
Если вывзгляните на этот пример:
https://gallery.technet.microsoft.com/WPF-Highlight-Matching-71ad5a04
Он работает с просмотром списка, а не с просмотром дерева, и выделяет текст, делая фон красным.Не совсем то, что вам нужно.Но принцип - это то, на что нужно обратить внимание.
Вы можете легко изменить используемый список просмотра на древовидное представление.
Сказав это, вы, кажется, имеете только уровень элементов в своем древовидном представлении,так что вы в любом случае можете использовать просмотр списка в любом случае.
Во всяком случае.
Если вы посмотрите, вы увидите, что каждый элемент разделен с помощью регулярного выражения, так что есть отдельная модель представления RunHiза каждый кусок.Соответствующим частям IsMatch присвоено значение true на их RunHi.Они формируются в виде горизонтального списка - так что он выглядит как один текстовый блок, но на самом деле один или несколько расположены один за другим.Каждая строка списка представляет собой список.Конечно, вы можете сделать заголовок каждого элемента дерева представлением списка, если вам особенно нужен вид дерева.
Блок данных используется для придания фону желтого цвета.Чтобы сделать его жирным, вы можете просто изменить эту часть:
<ControlTemplate TargetType="{x:Type ListViewItem}">
<TextBlock Text="{Binding Text}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsMatch}" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</ControlTemplate>