データ バインディングと Entity Framework のナビゲーション プロパティに問題があります。
Entity Framework デザイナーによって生成された 2 つのクラスがあります。
クラス Foo :
id (int)
bar (Bar)
...
クラスバー
id (int)
name (string)
...
を使用してObservableCollection<Foo>
、データグリッドに次の列を入力しました。
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Binding="{Binding Path=id}"/>
<DataGridTemplateColumn Header="Bar">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
SelectedValuePath="Id"
SelectedValue=
"{Binding Path=bar.Id, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="name"
ItemsSource=
"{Binding Path=BarList,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}}}"
Background="White" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
ComboBox には が取り込まれObservableCollection<Bar>
、現在の が正しく表示されていBar
ます。
コンボボックスで別のアイテムを選択すると問題が発生します。次のエラーが表示されます。
System.Windows.Data Error: 8 : Cannot save value from target back to source.
System.InvalidOperationException: The property 'Id' is part of the object's key information and cannot be modified
エラーが表示される理由はわかりますが、これを別の方法で処理するにはどうすればよいですか?
Foo
編集:との関係Bar
は N..1 です。つまり、 aFoo
は 1 または 0Bar
で、 Bar は複数Foo
の s を持つことができます。
現時点では、新しいものを選択することはできませBar
んFoo
。