0

にデータを入力するのに問題がDataGridあります。XML fileを逆シリアル化し、情報を配列に配置し、メソッドを使用して をArray配置するコードを次に示します。DataGridItemsSource

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から文字列を出力します。これは正しいことです。 も true に設定されています。arraylistarraylistAutoGenerateColumns

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 は、フィールドではなくプロパティでのみ機能します。

プロパティとして作成すると、動作するはずですName-Score

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