Класс DataGrid
использует частный метод AddNewItem для создания экземпляра базового объекта данных.
Если вы получите ссылку на контейнер строк для заполнителя, вы можете обработать его событие GotFocus
и вызвать метод AddNewItem()
, используя отражение:
private void DataGrid_Loaded(object sender, RoutedEventArgs e)
{
DataGridRow newItemPlaceholderRow = (DataGridRow)dg.ItemContainerGenerator.ContainerFromItem(CollectionView.NewItemPlaceholder);
if (newItemPlaceholderRow != null)
newItemPlaceholderRow.GotFocus += (ss, ee) =>
{
typeof(DataGrid).GetMethod("AddNewItem",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
.Invoke(dg, null);
};
}
Обратите внимание, что AddNewItem()
недокументирован и может быть изменен или удален в будущих версиях, но если вы действительно хотите изменить настройки встроенного элемента управления, другой вариант, вероятно, будет заключаться в создании вашего собственного.