我需要在我的datagrid标题中为其中一列提供一种日期选择器。当用户从此标题日期选择器中选择日期时,系统应将此日期绑定到具有日期的所有列单元格 有办法吗?
答案 0 :(得分:7)
最好的方法是将标头的dataTemplate设置为包含DatePicker的自定义模板,该DatePicker的Date绑定到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}
的事情。您可能会做一些调整,但总的来说,这应该为您提供如何继续的开始
答案 1 :(得分:2)
您可以修改DataGrid的列标题以包含DateTimePicker,然后将更改事件添加到DateTimePicker,以便在数据更改时更新该列中的所有数据。
<DataGridTextColumn Binding="{Binding Path=MyDate}">
<DataGridTextColumn.Header>
<!-- Add Header Here w/ DateTimePicker -->
</DataGridTextColumn.Header>
</DataGridTextColumn>