0

所以我尝试了一段时间来寻找像我这样的案例,但真的找不到任何有用的东西。

我的问题是我有一个数据网格,其中我需要有 2 列,其中包含作业名称和作业的创建者。我已经创建了带有标题的列,如下所示。

   <DataGrid AutoGenerateColumns="False" Height="257" HorizontalAlignment="Left" 
   Margin="12,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="479">

        <DataGrid.Columns>
            <DataGridTextColumn Header="Assignments" />
            <DataGridTextColumn Header="Creator" />
        </DataGrid.Columns>
    </DataGrid>

此外,我尝试将此代码排列为测试。对于最终解决方案,我将从数据库中获取分配列表,但我还没有。

    public MainWindow()
    {
        InitializeComponent();
        assignment1 = new Assignment();
        assignment2 = new Assignment();
        assignments = new List<Assignment>();
        assignment1.AddBasicInformation("Engelsk A", "Hans Rueløkke", "Han gik en tur",      0);
        assignment1.AddBasicInformation("Historie B", "Lis Hansen", "Hvad hed den første mand på månen? ___.", 0);
        assignments.Add(assignment1);
        assignments.Add(assignment2);
        for(int i = 0; i < assignments.Count; i++)
        {
           dataGrid1.Items.Add(assignments);
        }
    }

如您所见,分配包含 3 个字符串、一个整数,此外它们还包含几个列表。然而,我想在数据网格中显示的唯一信息是前 2 个字符串。任何人都可以帮助我如何实现这一目标?

编辑我的作业课的重要部分看起来像这样

    public class Assignment
{
    private string name;
    private string creator;
    private string assignmentText;
    private int type;
    private List<Answer> answerlist;

    public void AddBasicInformation(string aname, string acreator, string aassignmentText, int atype)
    {
        name = aname;
        creator = acreator;
        assignmentText = aassignmentText;
        type = atype;
        answerlist = new List<Answer>();
    }

    public string GetName()
    {
        return name;
    }

    public string GetCreator()
    {
        return creator;
    }
4

1 回答 1

1

在构造函数中,将 for 循环替换为:

dataGrid1.ItemsSource = assignments;

然后,您可以在 XAML 中声明列的绑定(假设 Assignment 类具有名为 Assignemnts 和 Creator 的属性):

<DataGridTextColumn Header="Assignments" Binding="{Binding Name} />
<DataGridTextColumn Header="Creator" Binding="{Binding Creator}" />

在此示例中,ItemsSource 的绑定是一种反模式,但它会帮助您入门。

有关详细信息,请参阅WPF DataGrid 类

编辑:响应 OP 更新的代码示例

WPF 中的所有绑定都必须使用属性完成。更新您的作业类以使用属性而不是字段:

public class Assignment
{
    Public string Name {get; set;}
    Public string Creator {get; set;}
    Public string AssignmentText {get; set;}

    // ...
}
于 2012-04-09T23:05:33.033 回答