wpf - 如何使用突出显示的查询词在 WPF 项目控件中显示搜索结果

标签 wpf xaml datatemplate itemscontrol

我想在 WPF ItemsControl 中显示搜索结果,并突出显示查询词。

我使用的搜索引擎,Lucene.Net使用 Highlighter 插件,返回带有如下标记的查询词的字符串:

...these <Bold>results</Bold> were found to be statistically significant...

我可以指示 Highlighter 插件使用任何一组标记标签来包装查询词。我不限于 <Bold>上面示例中的标记。对于 WPF,我可能会制作这些 <Run/>附加样式的元素。

挑战在于获取给我的字符串并将其呈现为好像它是我用于搜索结果的数据模板中的“实际 XAML”。换句话说,我想看到这样的东西:

...these results were were found to be statistically significant...



但我正在努力解决如何将数据绑定(bind)与数据模板中 XAML 字符串的动态呈现相结合。这里最好的方法是什么?
  • 使用 UserControl 显示每个搜索结果并调用 XamlReader.Load()从代码隐藏?
  • 构造一个包含搜索结果字符串的 FlowDocument 并使用 FlowDocumentScrollViewer 显示结果?
  • 完全是别的东西……?
  • 最佳答案

    一个 TextBlock可以包含多个 Run s 在其 Inlines收藏。您可以在代码或 XAML 中构建它:

    <TextBlock>
        <Run>... these </Run>
        <Run FontWeight="Bold">results</Run>
        <Run> were found...</Run>
    </TextBlock>
    

    关于wpf - 如何使用突出显示的查询词在 WPF 项目控件中显示搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3728584/

    相关文章:

    c# - 如何在 WPF 应用程序中显示错误消息?

    c# - WPF:如何将 Unicode 字符转移到共享资源中?

    wpf - 为什么要使用 DataTemplate.DataType

    silverlight - Silverlight 的 DataTemplate 中缺少 FindName 方法是否有解决方法?

    wpf - 使用一个处理程序的WPF Toggle Button Checked/Unchecked事件

    wpf - 像飘落的雪花一样移动元素

    c# - 如果 ListView 不是 "None"选择模式,则 RightTapped 不会在 Metro ListViewItem 上触发

    c# - 根据光标位置和当前选择以编程方式更改 WPF 文本框的文本

    c# - UWP ComboBox 不再具有打开/关闭动画(内部版本 14393)

    wpf - 如何让 DataTemplate.DataTrigger 检查大于或小于?