列表里面的列表作为ItemsSource

时间:2019-04-05 18:18:56

标签: c# wpf datagrid

我必须创建DataGrid,其中ItemsSourc e是列表类型的集合(DataAttributeCollection),其中的每个对象(DataAttribute)都具有attributename作为字符串和值列表作为字符串。目前,网格显示了两个标头attributenam e和valuesattributename下面的单元格正确地带有attributename,但值为空的http://prntscr.com/n81tg7。我有两个问题:

  1. 只有1个值列,应该有尽可能多的值 在dataattribute对象中。
  2. 我如何进入内部列表并在单元格中插入值?
    public partial class PageMainAttribute : Page
    {
        public PageMainAttribute()
        {
            InitializeComponent();
            DataAttribute da1 = new DataAttribute("Wind");
            DataAttribute da2 = new DataAttribute("Temperature");
            da1.AddValue("Strong");
            da1.AddValue("Storm");
            da1.AddValue("None");
            da2.AddValue("Hot");
            da2.AddValue("Cold");
            DataAttributeCollection dac = new DataAttributeCollection();
            dac.Add(da1);
            dac.Add(da2);
            AttributeGrid.ItemsSource = null;
            AttributeGrid.ItemsSource = dac;

        }
    }

经过研究,我发现了如何手动生成列和行,但是我不知道在Binding中键入什么内容

            InitializeComponent();
            DataAttribute da1 = new DataAttribute("Wind");
            DataAttribute da2 = new DataAttribute("Temperature");
            da1.AddValue("Strong");
            da1.AddValue("Storm");
            da1.AddValue("None");
            da2.AddValue("Hot");
            da2.AddValue("Cold");
            DataAttributeCollection dac = new DataAttributeCollection();
            dac.Add(da1);
            dac.Add(da2);
            AttributeGrid.ItemsSource = null;
            AttributeGrid.ItemsSource = dac;
            DataGridTextColumn textColumn = new DataGridTextColumn();
            textColumn.Header = "Attribute name";
            textColumn.Binding = new Binding("I dont know what to type here");
            AttributeGrid.Columns.Add(textColumn);

//编辑 好的,我已经解决了1个值列的问题,但仍然不知道如何将任何数据分配给值单元格,还是需要绑定。

当前代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Decision_tree.DataObjects.DataAttributes;
namespace Decision_tree.Views.Pages
{
    /// <summary>

    /// </summary>
    public partial class PageMainAttribute : Page
    {
        public PageMainAttribute()
        {
            InitializeComponent();
            DataAttribute da1 = new DataAttribute("Wind");
            DataAttribute da2 = new DataAttribute("Temperature");
            DataAttribute da3 = new DataAttribute("Rain");
            da1.AddValue("Strong");
            da1.AddValue("Storm");
            da1.AddValue("None");
            da2.AddValue("Hot");
            da2.AddValue("Cold");
            da3.AddValue("Yes");
            da3.AddValue("No");
            DataAttributeCollection dac = new DataAttributeCollection();
            dac.Add(da1);
            dac.Add(da2);
            dac.Add(da3);
            //AttributeGrid.ItemsSource = null;
            //AttributeGrid.ItemsSource = dac;
            AttributeGrid.CanUserAddRows = true;
            AttributeGrid.CanUserDeleteRows = true;
            AttributeGrid.IsReadOnly = false;
            DataGridTextColumn textColumn = new DataGridTextColumn();
            textColumn.Header = "Attribute name";
            textColumn.Binding = new Binding();
            AttributeGrid.Columns.Add(textColumn);

            for (int k=0;k<dac.MaxLength;k++)
            {
                textColumn = new DataGridTextColumn();
                textColumn.Header = "Value #"+(k+1);
                textColumn.Binding = new Binding("I dont know what to type here");
                AttributeGrid.Columns.Add(textColumn);
            }
            for(int i=0;i<dac.Size;i++)
            {
                    AttributeGrid.Items.Add(dac.ElementAt(i).AttributeName);
            }


        }
    }
}

0 个答案:

没有答案