如何使用List<Object[]>填充WPF中的DataGrid?



我有此方法填充列表,并准备填充datagrid。我想在指定和个性化的列中填写此列表中的每个数据,这是代码:

public List<Object[]> EventsDates(DateTime date1, DateTime date2, int idUser)
{
    int dateStamp1 = Convert.ToInt32((date1 - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds);
    int dateStamp2 = Convert.ToInt32((date2 - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds);
    var eventDate = from DataModel.TB_EVENT_LOG el in SessionContext.DBContext.TB_EVENT_LOG
                   where el.nDateTime >= dateStamp1 && el.nDateTime <= dateStamp2 && el.nUserID == idUser
                   select el.nDateTime;
    List<Object[]> dates = new List<Object[]>();
    List<String> datet = new List<String>();
    foreach (var date in eventDate)
    {
        List<String> times = new List<String>();
        System.DateTime result = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
        String dateShort = result.AddSeconds((double)date).ToShortDateString();
        if (!datet.Contains(dateShort))
        {
            datet.Add(dateShort);                   
            int dateStamp3 = Convert.ToInt32((DateTime.Parse(dateShort) - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds);
            int dateStamp4 = Convert.ToInt32((DateTime.Parse(dateShort).AddDays(1) - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds);
            var eventTimes = from DataModel.TB_EVENT_LOG el in SessionContext.DBContext.TB_EVENT_LOG
                             where el.nDateTime >= dateStamp3 && el.nDateTime < dateStamp4 && el.nUserID == idUser
                             select el.nDateTime;
            String stringtimes = "";
            foreach (var datetime in eventTimes)
            {
                DateTime timeShort = result.AddSeconds((double)datetime).ToLocalTime();
                times.Add(timeShort.TimeOfDay.ToString("hh\:mm\ "));
            }
            stringtimes = string.Join("- ", times);
            dates.Add(new Object[]{
            dateShort.ToString(),stringtimes.ToString()
        });
        }
    }
    return dates;
}

有任何建议

假设每个对象[](换句话说,每行)由两个strings组成,那么这就是您需要的:

    <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding YourList}">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Date" Binding="{Binding [0]}" />
            <DataGridTextColumn Header="Time" Binding="{Binding [1]}" />
        </DataGrid.Columns>
    </DataGrid>

最新更新