【问题标题】:Binding Datagrid to observablecollection wont display data only rows将 Datagrid 绑定到 observablecollection 不会仅显示数据行
【发布时间】:2012-11-10 18:41:35
【问题描述】:

我在执行以下操作时遇到了一些麻烦:

我正在创建一个像这样的 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;
    }

然后我用一些示例数据(在本例中为两行)填充它,如下所示:

            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 Datagrid:

dataGrid1.ItemsSource = ocOrderData;

Datagrid 的 XAML 如下所示:

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

现在,数据网格可以显示两行,但是没有数据,没有列,除​​了有两行的空白数据网格之外什么都没有。为什么是这样?我做错了什么?

感谢任何帮助。 :)

【问题讨论】:

    标签: wpf .net-4.0 wpfdatagrid observablecollection


    【解决方案1】:

    您必须使用 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; }
    }
    

    【讨论】:

      【解决方案2】:

      您可以只绑定到公共属性而不是字段。

      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-08-29
        • 2013-09-07
        • 2015-05-06
        • 2012-12-19
        • 2016-09-13
        • 2023-03-13
        • 2012-04-02
        • 1970-01-01
        相关资源
        最近更新 更多