我想在WPF中DataGrid綁定到我的視圖模型,以便它將更新任何細胞對數據庫的更改,以及允許用戶刪除行並添加新行。我有一部分工作,但無法找到ADD和修改的ELEGANT解決方案。 這裏是XAMLWPF數據網格與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>
然後在我的視圖模型方法
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;
}
}
刪除一行或在數據網格修改行不流到數據庫。
一)我需要什麼其他具有約束力的XAML代碼,將檢測這些事件
二)如何檢測已刪除的記錄或修改項目視圖模型,以便我可以更新的DataContext創建如果它不會自動。
兩個問題; 1)NotifyCollectionChangedAction只會在添加新行或刪除時存在,如果您修改現有行中的單元格,則不會觸發。即無法判斷行是否髒。 2)當你第一次開始輸入NEW行時,NotifyCollectionChangedAction.Add在你有機會填充所有單元格之前被觸發。您不能將一個空行添加到數據庫,特別是如果此時仍有空字段。所以再次,你必須使用更新..再次,我不知道如何捕獲。 – Josef