我已经得到了这个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,并在行选择,按下键等方式显示编辑模板。