2017-09-13 4 views
0

こんにちは、編集を開始し、DatagridCell内にカーソルを置く方法を知っているし、すべてのテキストのコードが怒鳴るのセルにフォーカスを設定を設定し、カーソルデータグリッドセル内の位置を選択し、テキスト

を選択しないでください。しかし、カーソルはセル内にないので、ユーザーはテキストの入力を開始できません。また、は選択されていないので、ユーザーは直接値を置き換える代わりに手動でテキストを選択する必要があります。

Mainwindow.xaml.cs:

private void GrdLignes_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     foreach (var c in GrdLignes.SelectedCells) 
     { 
      if (c.Column.Header.ToString() == "Quantité Livrée") 
      { 
       var cellContent = c.Column.GetCellContent(c.Item); 
       if (cellContent != null) 
       { 
        var dc = (DataGridCell)cellContent.Parent; 
        dc.Focus(); 
        dc.IsEditing = true; 
       } 
      } 
     } 
    } 

enter image description here

編集:私はあなたが、細胞内TextBlockTextBoxで交換するまで待つ必要があり、カーソルが点滅=キャレット

答えて

2

言います。

EditingElementStyleを定義し、TextBoxためLoadedイベントを処理:

働いています
<DataGrid x:Name="GridLignes" ...> 
    <DataGrid.Resources> 
     <Style x:Key="tbStyle" TargetType="TextBox"> 
      <EventSetter Event="Loaded" Handler="OnLoaded" /> 
     </Style> 
    </DataGrid.Resources> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Quantité Livrée" Binding="{Binding Qty}" EditingElementStyle="{StaticResource tbStyle}" /> 
     ... 
    </DataGrid.Columns> 
</DataGrid> 

private void OnLoaded(object sender, RoutedEventArgs e) 
{ 
    TextBox textBox = sender as TextBox; 
    Keyboard.Focus(textBox); 
    textBox.CaretIndex = textBox.Text.Length; 
    textBox.SelectAll(); 
} 
+0

!ありがとうございました! – ebelair

関連する問題