Estoy intentando vincular una cuadrícula de datos en WPF a mi ViewModel para que actualice los cambios de celda en la base de datos y permita al usuario eliminar filas y agregar nuevas filas. Tengo una parte de ella funcionando pero no puedo encontrar una solución ELEGANTE para ADD y modificar. aquí es el xamlWPF datagrid con MVVM
<DataGrid AutoGenerateColumns="false" HorizontalAlignment="Left" Margin="26,41,0,0" Name="dataGrid1"
ItemsSource="{Binding Path=GetAllItems}" Height="200" VerticalAlignment="Top" Width="266" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=ItemListID}" Header="ID" Visibility="Hidden"/>
<DataGridTextColumn Binding="{Binding Path=ItemName}" Header="Name" Width="4*" />
<DataGridCheckBoxColumn Binding="{Binding Path=IsActive}" Header="Active" Width="*" />
</DataGrid.Columns>
continuación, en mi opinión, el método modelo
private ObservableCollection< ItemsList> getAllItems()
{
using (var context = new InspectorGeneralEntities())
{
var query = from I in context.ItemsLists
select I;
var item = new ObservableCollection<ItemsList>(query.ToList());
return item;
}
}
Supresión de una fila o modificar una fila en la cuadrícula de datos no fluye en la base de datos.
a) ¿qué otra unión ¿Es necesario crear en el código XAML que detectará estos eventos
b) ¿Cómo puedo detectar un registro eliminado o elemento modificado en el modelo de vista para que pueda actualizar el DataContext si no lo hará automáticamente
dos cuestiones.; 1) NotifyCollectionChangedAction sólo se disparará si se agrega una nueva fila o Eliminar fila existente y NO si modifica una celda en una fila existente. es decir, no hay forma de saber si la fila está sucia. 2) Al empezar a escribir la nueva fila de la NotifyCollectionChangedAction.Add se disparó antes de haber tenido la oportunidad de rellenar todas las células. No puede agregar una fila vacía a la base de datos especialmente si todavía hay campos nulos en este punto. Así que de nuevo debes usar la Actualización ... que de nuevo no puedo entender cómo capturar. – Josef