我在DatePicker
中有一个DataGrid
对象,可以从数据库或属性中成功显示日期:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Date, StringFormat=dd/MM/yyyy}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
现在我想在日期前面显示时间。这是我尝试过的,但它不起作用:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Date, StringFormat='dd/MM/yyyy HH:mm:ss'}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
注意:我不希望在代码隐藏中执行此操作。
答案 0 :(得分:8)
使用扩展名 DateTimePicker
答案 1 :(得分:1)
除了不使用其他组件,如果您只想以您要编辑的格式显示日期,您可以这样做:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Date,StringFormat={}{0:dd/MM/yyyy}}" VerticalAlignment="Center" HorizontalAlignment="Left">
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
答案 2 :(得分:0)
您可以执行以下操作:
<DataGridTemplateColumn Header="YourDate">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<DatePicker SelectedDate="{Binding YourDate, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Margin="2 0 0 0" Text="{Binding YourDate, UpdateSourceTrigger=PropertyChanged, StringFormat='t'}" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding YourDate}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
这将在绑定到相同属性的TextBox旁边显示一个DatePicker。 TextBox的StringFormat仅显示日期。
UpdateSourceTrigger设置为PropertyChanged,因此用户不会发生冲突。