3

我有这个 WPF DataGrid:

<DataGrid ItemsSource="{DynamicResource TNMaps}"  RowHeaderWidth="0" Width="680" AutoGenerateColumns="False" RowHeight="35" SelectionUnit="Cell"  >
     <DataGrid.Columns>
          <DataGridTextColumn Header="Test Name" Width="2*" Binding="{Binding TestName}" IsReadOnly="True" FontSize="20"/>
          <DataGridTextColumn Header="LIS Name" Width="*" Binding="{Binding LISName}"  FontSize="20" />
     </DataGrid.Columns> 
     <DataGrid.ColumnHeaderStyle>
          <Style TargetType="DataGridColumnHeader">
               <Setter Property="FontSize" Value="20"/>
          </Style>
     </DataGrid.ColumnHeaderStyle>
</DataGrid>

用户可以使用标题名称“LIS 名称”编辑 dataGridText 列中的单元格。我尝试在此 datagridTextColumn 上设置 gotfocus 和 lostfocus 事件,但这些事件不可用。我需要这样做,以便在用户尝试编辑此列中的单元格时显示键盘(对于触摸版本)。

还有另一种方法可以做到这一点吗?

4

1 回答 1

3

当您需要在编辑、设置焦点等时对单元格与单元格进行更精细的控制时,我建议您使用 DataGridTemplateColumns 并定义单元格和编辑单元格模板,而不是使用 DataGridTextColumn:

<DataGrid ItemsSource="{DynamicResource TNMaps}"  RowHeaderWidth="0" Width="680" AutoGenerateColumns="False" RowHeight="35" SelectionUnit="Cell"  >
 <DataGrid.Columns>
    <DataGridTemplateColumn>           
         <DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                        <TextBlock Text="{Binding TestName}" GotFocus="OnCellGotFocus"/>
                  </DataTemplate>
         </DataGridTemplateColumn.CellTemplate>
         <DataGridTemplateColumn.CellEditingTemplate>
              <DataTemplate>
                <TextBox Text="{Binding TestName}"  GotFocus="OnCellInEditGotFocus"/>
              </DataTemplate>
          </DataGridTemplateColumn.CellEditingTemplate>
     </DataGridTemplateColumn>

放入 TextBlock 与 TextBox,但您可以做任何事情,并获得视觉元素提供的完全控制。您还可以强制网格进入 EditMode 并在行选择、keydown 等..等上显示编辑模板。

于 2013-06-11T15:31:11.087 回答