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