我有一个绑定到ViewModel的WPF DataGrid,它有一个日期字段。我想将日期字段编辑从使用TextBox更改为Calendar或DatePicker。我完全按照下面的链接。但是,出于某种原因,我无法在DatePicker的TextBox旁边看到日历。这令人困惑。我正在复制粘贴下面的代码(source):
<Grid.Resources>
<DataTemplate x:Key="DateTemplate">
<TextBox IsReadOnly="False" Text="{Binding TestDate}"></TextBox>
</DataTemplate>
<DataTemplate x:Key="EditingDateTemplate">
<DatePicker SelectedDate="{Binding TestDate}" />
</DataTemplate>
</Grid.Resources>
<DataGridTemplateColumn Header="Test Date" IsReadOnly="False" CellTemplate="{StaticResource DateTemplate}" CellEditingTemplate="{StaticResource EditingDateTemplate}" Width="120">
答案 0 :(得分:0)
原因是文本框覆盖了数据网格单元格的整个区域。要进入单元格编辑模式,您需要双击单元格,但不能,因为您总是按下文本框。您可以通过在DateTemplate中为文本框设置margin =“5”来检查它,然后尝试双击单元格的边框区域。 只需为文本框设置IsHitTestVisible =“False”属性:
<DataTemplate x:Key="DateTemplate">
<TextBox IsReadOnly="False" Text="{Binding TestDate}" IsHitTestVisible="False"></TextBox>
</DataTemplate>
<DataTemplate x:Key="EditingDateTemplate">
<DatePicker SelectedDate="{Binding TestDate}" />
</DataTemplate>