我有一个带有RowDetailsTemplate的DataGrid。在详细信息模板中,DataGridColumn 内有一个文本框。当我想通过单击文本框来设置焦点时,首先选择行。只有第二次单击我才能选择文本框本身。有没有一种好方法可以在 xaml 中捕获第一次点击事件并手动选择文本框?
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid>
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0"/>
<ComboBox Grid.Column="1"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
<DataGridTextColumn Header="Phone">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBox Text="{Binding Price}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
此刻,我第一次点击。从第一次单击进入编辑模式。
利用DataGrid
SelectionUnit
属性并像这样设置值Cell
:
<DataGrid SelectionUnit="Cell" >
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0"/>
<ComboBox Grid.Column="1"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
YourStuff here
</DataGrid>