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

DataGridTextColumn を使用する代わりに、セルとセルの編集、フォーカスの設定などをより細かく制御する必要がある場合は、DataGridTemplateColumns を使用してセルを定義し、セルのテンプレートを編集することをお勧めします。

<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 を配置しますが、何でもでき、視覚要素が提供する完全な制御を得ることができます。グリッドを強制的に編集モードにして、行選択、キーダウンなどで編集テンプレートを表示することもできます.

于 2013-06-11T15:31:11.087 に答える