0
我有一個綁定到的ObservableCollection這是在我的NinjaList視圖模型WPF MVVM - DataGrid不更新更改回數據庫
public ObservableCollection<NinjaVM> Ninjas { get; set; }
在哪裏忍者定義方法的WPF的DataGrid
public NinjaListVM()
{
using (var context = new NinjaApp_DatabaseEntities())
{
var ninjas = context.ninjas.ToList();
Ninjas = new ObservableCollection<NinjaVM>(ninjas.Select(r => new NinjaVM(r)));
}
}
在我看來,它的代碼,隨後
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:NinjaApp_V2.Views"
xmlns:ViewModel="clr-namespace:NinjaApp_V2.ViewModel" xmlns:NinjaApp_V2="clr-namespace:NinjaApp_V2" x:Name="NinjaCRUDWindow" x:Class="NinjaApp_V2.Views.NinjaCRUD"
mc:Ignorable="d"
Title="NinjaCRUD" Height="300" Width="300"
DataContext="{Binding Ninjas, Source={StaticResource Locator}}" Loaded="onLoad">
<Grid Margin="0,10,3.6,0.4">
<DataGrid x:Name="DataGridNinjas" ItemsSource="{Binding Ninjas, Mode=TwoWay}" SelectedValue="{Binding Ninjas, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="True">
</DataGrid>
<Button x:Name="btnNewNinja" Command="{Binding ShowNewNinja}" Margin="10,228,103.4,-0.4" Content="New Ninja"/>
</Grid>
</Window>
的觀點並示出了T的所有內容他將忍者表放入網格中。此外,在進行更改時,它們會在應用程序運行期間持續存在。但更改不會保存到數據庫中。我的理解是,如果您使用Mode = TwoWay綁定到ObservableCollection這樣的ObservableCollection,它應該自動將更改更新回數據庫。但顯然我錯過了一些東西,有人可能會指出我做錯了什麼?
我使用MvvM Light作爲MvvM框架。
也許會讓人們說:「Strahbehry可以請你不要使用上的答案評論申報你永遠永恆的愛一個人」這麼多,但由於我一直被困在這個多天,並且正朝着最後期限前進。這有效,你很棒。 –
作爲跟進,如果我現在刪除一行應用程序崩潰。你有什麼想法,爲什麼?它之前沒有。 –
哪個例外出現?我認爲你第一種方法拋出異常,因爲他們找不到該行。 – Lukas