获得焦点和失去焦点的dataGridTextColumn不可能



我已经得到了这个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 Name"的dataGridTextcolumn中的单元格。我试图在这个datagridTextColumn上设置一个gotfocus和一个lostfocus事件,但这些事件不可用。我需要这样做,所以我可以显示一个键盘,当用户试图编辑这个列中的单元格(触摸版本)。

还有别的方法吗?

当您需要更精细地控制单元格与编辑单元格,设置焦点等,而不是使用DataGridTextColumn,我建议使用datagridtemplatecolcolumns并定义单元格和编辑单元格模板:

<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 vs TextBox,但你可以做任何事情,并获得视觉元素提供的完全控制。您还可以强制网格进入EditMode,并在行选择,按下键等方式显示编辑模板。

最新更新