ToB企服应用市场:ToB评测及商务社交产业平台
标题:
WPF DataGrid 列表中,DataGrid.Columns 列根据不同的值表现不同内容
[打印本页]
作者:
种地
时间:
2024-9-15 05:45
标题:
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>
<Border
BorderThickness="1"
Background="{Binding LogType, Converter={StaticResource LogTypeToBackgroundConverter}}"
CornerRadius="5"
Padding="5"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<TextBlock
Text="{Binding LogType, Converter={StaticResource LogTypeToTextConverter}}"
Foreground="White"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontWeight="Bold"/>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
复制代码
2.接下来,我们需要定义两个转换器(LogTypeToBackgroundConverter 和 LogTypeToTextConverter),用于根据 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 中。如果能帮到你们,记得点赞收藏呐!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4