WPF:Dictionary< int,List< string>>在DataGrid中 [英] WPF: Dictionary<int, List<string>> in DataGrid

查看:206
本文介绍了WPF:Dictionary< int,List< string>>在DataGrid中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个字典< int,List< string>> 。每个ID(int)都有相应的名称动态列表( List< string> )。

I have a Dictionary<int, List<string>>. Each ID(int) has a corresponding dynamic list of names(List<string>).

Datagrid中的预期输出。

This is the expected output in Datagrid.

ID | Name | Name | Name
1    Ash    Tina   Kara
2    Kc     
3    Star   Lara

如何实现?

推荐答案

 <DataGrid x:Name="dg" ItemsSource="{Binding Dic}" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="id" Binding="{Binding Key}"/>
                <DataGridTextColumn Header="Name" Binding="{Binding Value[0]}"/>
                <DataGridTextColumn Header="Name" Binding="{Binding Value[1]}"/>
                <DataGridTextColumn Header="Name" Binding="{Binding Value[2]}"/>
            </DataGrid.Columns>
        </DataGrid>

如果Name不是固定数据,则需要动态添加列:

if Name is not a fixed data, you need add column dynamicly like this:

 DataGridTextColumn column = new DataGridTextColumn();
            column.Header = "name4";
            column.Binding = new Binding("Value[3]");
            dg.Columns.Add(column);

好的,这是我的代码:

 <DataGrid x:Name="dg" ItemsSource="{Binding Dic}" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="id" Binding="{Binding Key}"/>
            </DataGrid.Columns>
        </DataGrid>


private Dictionary<int, List<string>> dic;

        public Dictionary<int, List<string>> Dic
        {
            get { return dic; }
            set { dic = value; }
        }

        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = this;
            Dic = new Dictionary<int, List<string>>();
            Dic.Add(1, new List<string> { "a", "b", "c", "5" });
            Dic.Add(2, new List<string> { "d" });
            Dic.Add(3, new List<string> { "e", "f" });

            int count = 0;
            foreach (List<string> lst in Dic.Values)
            {
                if (lst.Count > count)
                {

                    for (int i = count; i < lst.Count; i++)
                    {
                        DataGridTextColumn column = new DataGridTextColumn();
                        column.Header = "name" + i;
                        column.Binding = new Binding(string.Format("Value[{0}]", i));
                        dg.Columns.Add(column);
                    }
                    count = lst.Count;
                }
            }


        }

但我希望你自己完成

这篇关于WPF:Dictionary&lt; int,List&lt; string&gt;&gt;在DataGrid中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆