You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinUI 3中如何将分类Data Grid的父ID替换为父分类名称?

解决方案

1. 更新模型类

给IngredientCategory新增一个用于存储父分类名称的属性:

public class IngredientCategory
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Parent { get; set; }
    // 新增属性,用于展示父分类名称
    public string ParentName { get; set; }

    public IngredientCategory(){}

    public IngredientCategory(int id, string name, int parent)
    {
        Id = id;
        Name = name;
        Parent = parent;
        ParentName = string.Empty;
    }
}

2. 拉取数据后匹配父分类名称

从SQLite获取所有分类后,通过字典映射快速匹配父ID对应的分类名称:

// 从数据库获取全部分类数据
var categories = GetAllIngredientCategoriesFromSqlite();

// 构建ID到分类名称的映射字典,提升查找效率
var categoryIdMap = categories.ToDictionary(c => c.Id, c => c.Name);

// 遍历分类列表,为每个子分类设置父分类名称
foreach (var category in categories)
{
    // 假设无父分类时Parent字段值为0,可根据实际数据库规则调整
    if (category.Parent != 0 && categoryIdMap.ContainsKey(category.Parent))
    {
        category.ParentName = categoryIdMap[category.Parent];
    }
    else
    {
        category.ParentName = string.Empty;
    }
}

// 将处理后的列表绑定到DataGrid
dataGrid.ItemsSource = categories;

3. 配置DataGrid列展示

在XAML中修改DataGrid的列绑定,替换原Parent字段为新增的ParentName:

<DataGrid x:Name="dataGrid" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="分类名称" Binding="{Binding Name}" />
        <DataGridTextColumn Header="父分类" Binding="{Binding ParentName}" />
        <!-- 其他列按需添加 -->
    </DataGrid.Columns>
</DataGrid>

注意:如果数据库中无父分类时Parent字段的默认值不是0,需要同步调整代码中的判断条件。

内容的提问来源于stack exchange,提问作者Nuvolari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:55:07