DataGrid.RowDetailsTemplate: нажатие на элемент в строке устанавливает фокус на строку, но не на сам элемент - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть DataGrid с RowDetailsTemplate.В шаблоне сведений есть текстовое поле внутри 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>

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Используйте SelectionUnit свойство DataGrid и установите значение 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>
0 голосов
/ 05 февраля 2019

<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>

На данный момент я нажал первый раз.С первого клика переходит в режим редактирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...