gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:36:16 24 4
gpt4 key购买 nike

我想在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com