wpf - 选择日期范围并生成列标题

时间:2017-03-04 17:42:00

标签: c# wpf datagrid datepicker

是否可以使用两个日期选择器选择日期范围?第一个datepicker表示开始日期,第二个datepicker表示结束日期。

选择这些日期后,是否可以使用包含这些日期的标题生成datagrid列?

<DataGrid x:Name="dgTemplate" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn>
                <DataGridTextColumn.Header>
                    <ComboBox ItemsSource="{Binding DataContext.Employees, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" SelectedValue="{Binding DataContext.SelectedEmployee, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Mode=TwoWay}" IsTextSearchEnabled="True" IsEditable="True" DisplayMemberPath="EmpName" Style="{DynamicResource MaterialDesignComboBox}" materialDesign:HintAssist.Hint="Employee Name"/>
                </DataGridTextColumn.Header>
            </DataGridTextColumn>

            <!--DataGridDateColumns-->

            <DataGridTextColumn Header="Total"/>

            <DataGridTextColumn Header="Rate"/>

            <DataGridTextColumn Header="Amount"/>

            <DataGridTextColumn Header="Deduction"/>
        </DataGrid.Columns>
    </DataGrid>

评论部分应该是列出现的位置。标题中的日期应采用此格式&#34; dd / mm / yyyy&#34;,可以是&#34; Mon 01 / Feb / 2017&#34;或&#34; 01/02 / 2017&#34;。

但我需要的最重要的方面是选择范围后出现的列。

1 个答案:

答案 0 :(得分:0)

使用循环(for,while等)迭代范围内的日期。为每个日期创建并添加新列。

这样的事情可以解决问题:

DateTime startDate = (DateTime)dtpStartDate.SelectedDate;
DateTime endDate = (DateTime)dtpEndDate.SelectedDate;

  if (startDate != null && endDate != null)
  {
      while (startDate < endDate)
      {
          DataGridTextColumn newColumn = new DataGridTextColumn();
          newColumn.Header = startDate.ToShortDateString();

          dgTemplate.Columns.Add(newColumn);

          startDate = startDate.AddDays(1);
      }
  }