DataGrid.RowDetailsTemplate:单击行集中的元素,将焦点放在行上,而不是元素本身上



我有一个带有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>

最新更新