に私は私のNinjaListのViewModelWPF MVVM - DataGridの変更を更新しないバックデータベース
public ObservableCollection<NinjaVM> Ninjas { get; set; }
そして忍者が定義されている方法であるのObservableCollectionにバインドされているWPFのデータグリッドを持って
public NinjaListVM()
{
using (var context = new NinjaApp_DatabaseEntities())
{
var ninjas = context.ninjas.ToList();
Ninjas = new ObservableCollection<NinjaVM>(ninjas.Select(r => new NinjaVM(r)));
}
}
私のビュー内のコードは、tのすべての内容を示してい
<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>
ビューを踏襲しているよう彼はグリッドに忍者テーブル。また、変更が加えられると、アプリケーションが実行されている間中存続します。しかし、変更はデータベースに保存されていません。 ObservableCollectionにこのようにバインドすると、Mode = TwoWayを使用して自動的に変更をデータベースに更新する必要があることを理解しています。しかし明らかに私は何かが欠けている、誰かがおそらく私が間違っていることを指摘することができますか?
私はMvvMフレームワークとしてMvvM Lightを使用しています。
でこれを行うことができます練習のために私はこれを複数日にわたって執着しており、締め切りに向かって走っていました。これはうまくいきます。フォローアップとして –
、行を削除すると、アプリケーションがクラッシュします。理由は何ですか?以前はなかった。 –
例外が表示されますか?私は最初のメソッドは、行を見つけることができないため、例外をスローすると思います。 – Lukas