1

私は次の要求を持っています: 項目は、ボタンのクリックでデータグリッド (WPF) に追加および削除されます。ユーザーがデータグリッドに新しい行 (新しい項目) を追加すると、この新しい項目で自動的に編集モードに入りたいと思います。これは、SelectionUnit が Cell の場合に機能しますが、FullRow にしたいと考えています。datagrig.BeginEdit() を呼び出す前に SelectionUnit を Cell に変更しようとしましたが、うまくいきません。

コードは次のとおりです。

<DataGrid Name="dgDatagrid"  Margin="20,20,3,3" CanUserSortColumns="True" ItemsSource="{Binding AllItems}"
    AutoGenerateColumns="False" SelectionUnit="FullRow"  SelectionMode="Single" CanUserAddRows="False" CanUserDeleteRows="False"
    CanUserResizeRows="True" CanUserReorderColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="First column name" MinWidth="160" Binding="{Binding Path=FirstColumn}"/>
        <DataGridCheckBoxColumn Header="Second column name" MinWidth="100" Binding="{Binding Path=SecondColumn, UpdateSourceTrigger=PropertyChanged}"/>
    </DataGrid.Columns>
</DataGrid>

バックグラウンド機能:

private void AddNewItem()
{
    var newItem = new Item();
    AllItems.Add(newItem);
    dgDatagrid.ScrollIntoView(newItem );
    dgDatagrid.SelectedItem = newItem ;
    var selectedIndex = dgDatagrid.SelectedIndex;

    dgDatagrid.SelectionUnit = DataGridSelectionUnit.Cell;
    dgDatagrid.CurrentCell = new DataGridCellInfo(dgDatagrid.Items[selectedIndex], dgDatagrid.Columns[0]);
    dgDatagrid.BeginEdit();
    dgDatagrid.SelectionUnit = DataGridSelectionUnit.FullRow;
}
4

0 に答える 0