WPF Dategrid 未显示任何包含数据的行

问题描述 投票:0回答:1

我创建了一个简单的 WPF 应用程序,我想从 Excel 工作表导入数据,执行一些自定义操作并导出到在线日历。为了掌握导出到在线议程的项目数量,我想创建一个数据网格,我可以在其中过滤和选择我想要导出的项目。

我的wpf网格如下:

<DataGrid Name="dataGridAgendaItems" AutoGenerateColumns="False" ItemsSource="{Binding}"  Margin="0,0,0,61" >
 <DataGrid.Columns>
  <DataGridTextColumn Header="X" Width="0.3*" Binding="{Binding Path=IsSelected}" />
  <DataGridTextColumn Header="Datum" Width="1*" Binding="{Binding Path=Date}" />
  <DataGridTextColumn Header="Tijd" Width="1*" Binding="{Binding Path=Time}" />
  <DataGridTextColumn Header="Locatie" Width="1*" Binding="{Binding Path=Location}" />
  <DataGridTextColumn Header="Title"  Width="2*" Binding="{Binding Path=Title}" />
  <DataGridTextColumn Header="Omschrijving" Width="3*" Binding="{Binding Path=Description}" />
 </DataGrid.Columns>
</DataGrid>

背后的代码(出于审查和帮助目的而被删除:

namespace ExcelToCalendar
{
    public partial class MainWindow : Window
    {
        public ICollection<Excel.AgendaRow> AgendaItems;
        ...
        private void BtnConfirmColumns_Click(object sender, RoutedEventArgs e)
        {
            ...

            AgendaItems = new List<Excel.AgendaRow>();
            foreach(var row in Rows)
            {
                ...
                Excel.AgendaRow tmpAgendaItem = new()
                {
                    Date = row.Columns[dateColumn].ToString(),
                    Title = row.Columns[titleColumn].ToString()
                };
                ...
                AgendaItems.Add(tmpAgendaItem);
            }

            dataGridAgendaItems.ItemsSource = AgendaItems;
        }
    }
}

和Excel课程

 public class Excel
    {
        ...

        public class AgendaRow
        {
            public int Id;
            public required string Date;
            public string? Time;
            public string? Location;
            public string? Description;
            public required string Title;
            public bool IsSelected;
        }
    }

当我运行应用程序时,数据网格显示正确的行数,但所有列都是空的。出了什么问题?现在尝试了很多东西但没有得到任何结果,请帮忙。

c# wpf datagrid
1个回答
0
投票

看来问题可能与您定义 AgendaRow 类的方式有关。在 WPF 中,当您将数据绑定到 DataGrid 时,它依赖于属性,而不是字段。以下是修改 AgendaRow 类以使用属性的方法:

public class Excel
{
    // ...

    public class AgendaRow
    {
        public int Id { get; set; }
        public string Date { get; set; }
        public string Time { get; set; }
        public string Location { get; set; }
        public string Description { get; set; }
        public string Title { get; set; }
        public bool IsSelected { get; set; }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.