2012-03-01 45 views
0

我正在使用.NET 3.5,WPF。DataGrid中的DatePicker隐藏,直到你双击它

我在数据网格中嵌入了Datapicker。在Data Picker中更改日期会正确触发DataGrid的事件RowEditingEnd。但是,在双击单元格之前,DataPicker列显示没有内容。双击单元格后,DatePicker显示出来。有什么办法让DatePicker永久可见吗?

DataGrid的XML:

<WPFToolkit:DataGrid Name="dgCustomPermPopup" AutoGenerateColumns="False" Margin="30,20,35,60" SelectionMode="Single" IsReadOnly="False" RowEditEnding="ch" > 
     <WPFToolkit:DataGrid.Columns> 
      <WPFToolkit:DataGridTextColumn Header="id" Binding="{Binding Id}" Width="50" /> 
      <WPFToolkit:DataGridTextColumn Header="name" Binding="{Binding Path=DisplayDate}" Width="40" /> 
      <WPFToolkit:DataGridTemplateColumn Header="DisplayDate"> 
       <WPFToolkit:DataGridTemplateColumn.CellEditingTemplate> 
        <DataTemplate> 
         <WPFToolkit:DatePicker Text="" SelectedDate="{Binding Path=DisplayDate}" FirstDayOfWeek="Monday" SelectedDateFormat="Short" /> 
        </DataTemplate> 
       </WPFToolkit:DataGridTemplateColumn.CellEditingTemplate> 
      </WPFToolkit:DataGridTemplateColumn> 
     </WPFToolkit:DataGrid.Columns> 
    </WPFToolkit:DataGrid> 
+0

也许这会帮助你[单点击查看编辑](http://wpf.codeplex.com/wikipage?title=Single-Click%20Editing&ProjectName=wpf) – V4Vendetta 2012-03-01 10:25:03

回答

1

可以使用CellTemplate代替CellEditingTemplate使其始终可见。 CellEditingTemplate是用于显示处于编辑模式的单元格内容的模板。

<WPFToolkit:DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <WPFToolkit:DatePicker Text="" SelectedDate="{Binding Path=DisplayDate}" FirstDayOfWeek="Monday" SelectedDateFormat="Short" /> 
         </DataTemplate> 
    </WPFToolkit:DataGridTemplateColumn.CellTemplate> 
+0

使用CellTemplate,chaning在数据的日期grid不会触发datagrid中的RowEditingEnd事件 – Goxy 2012-03-01 11:15:07

+0

ok。对于你使用RowEditEnding事件?你可以在DisplayDate属性的setter中做任何事情吗? – 2012-03-01 11:26:05

0

联合解决方案呢?

<WPFToolkit:DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <WPFToolkit:TextBlock Text="{Binding Path=DisplayDate}" /> 
    </DataTemplate> 
</WPFToolkit:DataGridTemplateColumn.CellTemplate> 
<WPFToolkit:DataGridTemplateColumn.CellEditingTemplate> 
    <DataTemplate> 
     <WPFToolkit:DatePicker Text="" SelectedDate="{Binding Path=DisplayDate}" FirstDayOfWeek="Monday" SelectedDateFormat="Short" /> 
    </DataTemplate> 
</WPFToolkit:DataGridTemplateColumn.CellEditingTemplate>