c# - WPF:DataGrid 中的字典<int, List<string>>

标签 c# wpf datagrid

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

这是 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>

enter image description here

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

 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;
                }
            }


        }

但我希望你自己完成

关于c# - WPF:DataGrid 中的字典<int, List<string>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24361013/

相关文章:

c# - 在 C# 中获取 String.indexof 之后的字符串

c# - Razor 条件格式

c# - WPF Datagrid 列的默认值

c# - 在当前HttpContext session 中设置新的access_token

c# - 如何使用 StringFormat 强制显示 '+' 符号

WPF - 将 ValidationRules 绑定(bind)到 Combobox.Text 属性

c# - 在 Microsoft Surface 上禁用波纹反馈

c# - Silverlight Datagrid : Changing cell styles, 基于值

apache-flex - 弹性 3 : How do I get the DataGridColumn's dataField in its ItemRenderer?

c# - Linq 到 SQL : Aggregating over ||