Я рекомендую создать форму, которая специально добавляет данные в базу данных, а затем обновляет источник элементов сетки данных.
<DataGrid x:Name="dataGrid" ItemsSource="{Binding ProductCollection}" Grid.Row="1" AutoGenerateColumns="False" VirtualizingPanel.IsVirtualizing="True">
<DataGrid.Columns>
<DataGridTextColumn Header="DATE ADDED" Binding="{Binding DateAdded}" Width="Auto" />
<DataGridTextColumn Header="PRODUCT ID" Binding="{Binding Id}" Width="*"/>
<DataGridTextColumn Header="PRODUCT NAME" Binding="{Binding Name}" Width="*" />
<DataGridTextColumn Header="CATEGORY" Binding="{Binding CategoryName}" Width="*" />
</DataGrid.Columns>
</DataGrid>
Образец формы:
<StackPanel MinWidth="250" MaxWidth="250">
<TextBox Margin="10" Text="{Binding NewId,UpdateSourceTrigger=PropertyChanged}" MinHeight="38" />
<TextBox Margin="10" Text="{Binding NewName,UpdateSourceTrigger=PropertyChanged}" MinHeight="38"/>
<Button Command="{Binding InsertCommand}">Save</Button>
</StackPanel>
Для ViewModel
public ObservableCollection<ProductModel> ProductCollection { get; set; } = new ObservableCollection<ProductModel>();
После вставки данных в базу данных просто создайте новый объект продукта, используя данные из формы, а затем добавьте его в коллекцию (ProductCollection). Он автоматически обновит сетку данных.
ProductModel item = new ProductModel();
item.id = NewId;
item.Name = NewName;
ProductCollection.Add(item);
В контексте обновления данных я не рекомендую этот метод создания объекта, а затем вставки его в коллекцию, а не очистки коллекции и повторного полученияданные из базы данных, если в вашей программе несколько пользователей.