1

以下を機能させるのに少し問題があります。

私は次のようなObservableCollectionを作成しています:

ObservableCollection<OverViewItems> ocOrderData = new ObservableCollection<OverViewItems>();

OrderViewItemsクラスは次のようになります。

    public class OverViewItems
    {
        public string OrderNo;
        public int Pieces;
        public string SenderName;
        public string ReceiverName;
        public string ReceiverAddress;
        public string ReceiverZip;
        public string ReceiverCity;
        public DateTime DelDate;
    }

次に、次のようなサンプルデータ(この場合は2行)を入力します。

            ocOrderData.Add(new OverViewItems
            {
                OrderNo = "TEST",
                Pieces = 1,
                SenderName = "TEST SENDER",
                ReceiverName = "TEST RECEIVER",
                ReceiverAddress = "TEST ADDRESS",
                ReceiverZip = "TEST ZIP",
                ReceiverCity = "TEST CITY",
                DelDate = DateTime.Now,
            });

            ocOrderData.Add(new OverViewItems
            {
                OrderNo = "TEST 2",
                Pieces = 1,
                SenderName = "TEST SENDER 2",
                ReceiverName = "TEST RECEIVER 2",
                ReceiverAddress = "TEST ADDRESS 2",
                ReceiverZip = "TEST ZIP 2",
                ReceiverCity = "TEST CITY 2",
                DelDate = DateTime.Now,
            });

そして、次のようにWPFデータグリッドにバインドしてみてください。

dataGrid1.ItemsSource = ocOrderData;

また、DatagridのXAMLは次のようになります。

        <DataGrid 
        AutoGenerateColumns="True" 
        Height="200" 
        HorizontalAlignment="Left" 
        Margin="23,172,0,0" 
        Name="dataGrid1" 
        VerticalAlignment="Top" 
        Width="1084" 
        />

これで、データグリッドは2行を正常に表示しますが、データも列も、2行の空白のデータグリッド以外は何もありません。どうしてこれなの?私は何を間違えますか?

どんな助けでも大歓迎です。:)

4

2 に答える 2

4

OverViewItems単純なパブリックフィールドの代わりに、クラスのプロパティを使用する必要があります。
そうすることで、DataGridが列を正しく作成するようになります。

public class OverViewItems
{
    public string OrderNo { get; set; }
    public int Pieces { get; set; }
    public string SenderName { get; set; }
    public string ReceiverName { get; set; }
    public string ReceiverAddress { get; set; }
    public string ReceiverZip { get; set; }
    public string ReceiverCity { get; set; }
    public DateTime DelDate { get; set; }
}
于 2012-11-22T11:32:38.817 に答える
3

フィールドではなく、パブリックプロパティにバインドするだけです。

public class OverViewItems
{
    public string OrderNo {get;set};
    public int Pieces {get;set};
    public string SenderName {get;set};
    public string ReceiverName {get;set};
    public string ReceiverAddress {get;set};
    public string ReceiverZip {get;set};
    public string ReceiverCity {get;set};
    public DateTime DelDate {get;set};
}
于 2012-11-22T11:33:43.147 に答える