c# - 突出显示 DataGrid 单元格中的部分文本

标签 c# wpf highlighting

我想在 WPF 应用程序中突出显示数据网格中的字符串。
在 WinForms 中有一个 CellPainting 事件可以帮助我们实现这个目的。 我无法在 WPF 中找到任何内容。

我想突出显示出现在单元格中的 TEXT 的一部分不是整个单元格

我们将不胜感激。

最佳答案

你可以:

添加一个 DataGridTemplateColumn。在模板中放置一个 TextBlock。 然后,选项 1:插入您的 textBlock Run's。设置他们的格式。并将运行绑定(bind)到您的数据。 选项 2:通过转换器等在程序代码中设置 TextBlock 的内容。

选项 1

    <DataGridTemplateColumn>
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock>
                    <Run Text="{Binding xx}" Background="Yellow" />
                    <Run Text="{Binding yy}" />
                </TextBlock>                            
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>

选项 2

XAML

<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <DataTemplate.Resources>
            <myns:ConvertToFormatedRuns xmlns:myns="clr-namespace:YourProjectName" />
        </DataTemplate.Resources>
        <Label>
            <Label.Content>
                <MultiBinding Converter={StaticResource ConvertToFormatedRuns}>
                    <Binding Path="xxx" />
                    <Binding Path="yyy" />
                </MultiBinding>
            </Label.Content>
        </Label>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

代码

public class ConvertToFormatedRuns : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        var tb = new TextBlock();

        tb.Inlines.Add(new Run() { Text = (string)values[0], Background = Brushes.Yellow });
        tb.Inlines.Add(new Run() { Text = (string)values[1]});

        return tb;
    }
}

点评:你也可以像WinForms一样画图,但是没必要,不推荐。

关于c# - 突出显示 DataGrid 单元格中的部分文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22756681/

相关文章:

c# - 需要帮助合并两个 LINQ 语句

c# - 将工具提示分配给 Infragistics WebDataGrid 中所选行的单元格

wpf - WPF工具栏: how to remove grip (dots on the left)

solr - 无法获得突出显示的 Solr 响应

jquery - 在哪里可以找到 Notepad++ 的 jQuery 语法突出显示插件?

CSS:高亮文字效果

c# - 查找所有 Func 委托(delegate)

c# - 从页面读取 XML 响应

c# - WPF 中作用域 EF Core DbContext 的生命周期

c# - 如何获取在 XAML 中定义的 CollectionView