您的位置:首页 > 游戏 > 手游 > WPF DataGrid 列表中,DataGrid.Columns 列根据不同的值显示不同内容

WPF DataGrid 列表中,DataGrid.Columns 列根据不同的值显示不同内容

2025/3/10 15:33:55 来源:https://blog.csdn.net/weixin_39237340/article/details/142249440  浏览:    关键词:WPF DataGrid 列表中,DataGrid.Columns 列根据不同的值显示不同内容

需求:在WPF DataGrid 控件中,有以下列,绑定了一个LogType,值分别是0,1,2,根据不同的值,显示不同的内容以及背景

<DataGrid ItemsSource="{Binding EventLog}"><DataGrid.Columns><DataGridTextColumn Width="150" Binding="{Binding LogType}" Header="级别" >
</DataGrid.Columns>
</DataGrid>

最终效果图如下:

在这里插入图片描述

一.实现代码

1.需要使用 DataGridTemplateColumn 来为 LogType 列自定义显示模板

<DataGrid ItemsSource="{Binding EventLog}">
<DataGrid.Columns><DataGridTemplateColumn Header="级别" Width="150"><DataGridTemplateColumn.CellTemplate><DataTemplate><BorderBorderThickness="1"Background="{Binding LogType, Converter={StaticResource LogTypeToBackgroundConverter}}"CornerRadius="5"Padding="5"HorizontalAlignment="Center"VerticalAlignment="Center"><TextBlockText="{Binding LogType, Converter={StaticResource LogTypeToTextConverter}}"Foreground="White"HorizontalAlignment="Center"VerticalAlignment="Center"FontWeight="Bold"/></Border></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

2.接下来,我们需要定义两个转换器(LogTypeToBackgroundConverterLogTypeToTextConverter),用于根据 LogType 的值来设置背景颜色和显示文本。

2.1 LogTypeToBackgroundConverter 转换器实现
public class LogTypeToBackgroundConverter : IValueConverter
{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value is int logType){switch (logType){case 0:return "#00ee84";case 1:return "#f9c715";case 2:return "#df3c0b";default:return "#00d5e0";}}return "#00d5e0";}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){return null;}
}
2.2 LogTypeToTextConverter 转换器实现
public class LogTypeToTextConverter : IValueConverter
{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value is int logType){switch (logType){case 0:return "提示";case 1:return "警告";case 2:return "错误";default:return "未知";}}return "未知";}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){return null;}
}

3.将转换器,添加到资源字典中

在你的 XAML 用户控件中,需要将转换器添加到资源字典中,以便在数据模板中使用。添加代码如下:

在这里插入图片描述

这样就完成了 LogType 列的自定义显示。根据 LogType 的值,可以看到不同的背景颜色和文本显示在 DataGrid 中。如果能帮到你们,记得点赞收藏呐!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com