我有以下要求:通过单击按钮从数据网格(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;
}