2011-03-09 120 views
1

我需要在我的datagrid標題中爲其中一列提供一種日期選擇器。當用戶從該日期選擇器中選擇日期時,系統應該將此日期與日期綁定到所有列單元格。
有沒有辦法做到這一點?DataGrid中的HeaderTemplate WPF

回答

7

最好的方法是將頭的DataTemplate中設置爲包含一個datepicker其日期被綁定到DataGrid的DataContext的屬性中的一個的自定義模板,然後結合的細胞在該具體列相同的屬性。

是這樣的:

<DataGrid> 
     <DataGridTextColumn Binding="{Binding DataContext.myDate, RelativeSource={RelativeSource AncestorType=DataGrid}, Mode=OneWay}" > 
      <DataGridTextColumn.HeaderStyle> 
       <Style TargetType="{x:Type DataGridColumnHeader}"> 
        <Style.Setters> 
         <Setter Property="ContentTemplate"> 
          <Setter.Value> 
           <DataTemplate> 
            <DatePicker SelectedDate={Binding myDate, Mode=TwoWay} /> 
           </DataTemplate> 
          </Setter.Value> 
         </Setter> 
        </Style.Setters> 
       </Style> 
      </DataGridTextColumn.HeaderStyle> 
     </DataGridTextColumn> 
    </DataGrid> 

免責聲明:我沒有嘗試這個,我不知道有關{Binding DataContext.myDate, RelativeSource={RelativeSource AncestorType=DataGrid}事情。你可能會做一些調整,但總的來說,這應該給你一個開始如何進行

2

您可以修改DataGrid的列標題以包含DateTimePicker,然後將更改事件添加到DateTimePicker,該更新事件在數據更改時更新該列中的所有數據。

<DataGridTextColumn Binding="{Binding Path=MyDate}"> 
    <DataGridTextColumn.Header> 
     <!-- Add Header Here w/ DateTimePicker --> 
    </DataGridTextColumn.Header> 
</DataGridTextColumn>