::編集注::
私はこの質問を完全に書き直しました。これは単純化するためのタイトルです (私のエンティティ セットの名前とプロパティは、この類似のシナリオよりも理解するのがはるかに困難でした)。
::/編集注::
私はContext
、DataGridComboBoxColumn から自分のエンティティに表示して保存できるものとの間の「ナビゲーション リンクの欠落」を見つけるのに本当に苦労しています。
私のエンティティセット:
My VIEW: 「クラス」エンティティ セットにバインドされた DataGrid。これには 2 つの列があります。
- DataGridComboBoxColumn (各クラスの InstructorNames を表示)
- DataGridTextColumn (クラスを名前で表示)
<DataGrid x:Name="DataGrid1" DockPanel.Dock="Top" Background="Transparent"
ItemsSource="{Binding ClassesObservableCollection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridComboBoxColumn Width="220"
Header="Instructor"
SelectedValueBinding="{Binding InstructorID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="InstructorID"
DisplayMemberPath="InstructorName">
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=DataContext.InstructorsObservableCollection}"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=DataContext.InstructorsObservableCollection}"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
</DataGridComboBoxColumn>
それをすべて乗り越えるのは苦痛でしたが、ありがたいことに、それは非常にうまく機能しています. 更新は DataGridComboBoxColumn の選択を使用して機能しますが、NEW ROWS DO NOT SAVE WITH .SaveChanges()
!
足りないものを見つけるのを手伝ってください。
おそらく、ビューモデルのバッキング プロパティを使用して変更通知を送信することができなかった、この不思議な SelectedItemBinding プロパティにあるのでしょうか?
バインドされた Classes エンティティに各プロパティを保存する方法を明示的に伝える必要がありますか? (これは合理的ではないようです... xamlバインディングで処理する必要があるようです。)
読んでくれてありがとう!