0

我在填充DataGrid数据时遇到问题。这是我反序列XML file化并将信息放入数组中的代码,然后将其Array放入DataGridusingItemsSource方法中。

public partial class Teacher_Page : Window
{
    List<User> pupils;

    public Teacher_Page()
    {
        InitializeComponent();
        XmlSerializer deserializer = new XmlSerializer(typeof(List<User>));
        TextReader textReader = new StreamReader("../../../Pupils.xml");
        pupils = (List<User>)deserializer.Deserialize(textReader);
        textReader.Close();

        lbtest.Content = pupils[2].Name;
        dataResults.ItemsSource = pupils;

    }
}

但是,当我运行程序时,我DataGrid填充了正确数量的行,arraylist但是行是空的并且没有列。lbltest从 中输出一个字符串arraylist来证明arraylist不为空,这是正确的。 AutoGenerateColumns也设置为 true。

XAML

<DataGrid x:Name="dataResults" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="248" Width="610" IsReadOnly="True"/>

Code behind

public class User
{
    public String Name;
    public int Score;

    public User()
    {
    }
}
4

1 回答 1

5

问题在于你的User班级。

要在 dataGrid 中自动生成列,您应该properties在基础 ItemsSource 类和not fields. Bindingfrom XAML 仅适用于属性而不适用于字段。

制作NameScore作为属性,然后它应该可以工作 -

public class User
{
    public String Name { get; set; }
    public int Score { get; set; }
}
于 2013-04-14T18:08:23.207 回答