0

::編集注::

私はこの質問を完全に書き直しました。これは単純化するためのタイトルです (私のエンティティ セットの名前とプロパティは、この類似のシナリオよりも理解するのがはるかに困難でした)。

::/編集注::

私は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バインディングで処理する必要があるようです。)

読んでくれてありがとう!

4

2 に答える 2

0

csファイルで動的ビンギングを使用する必要があると思います。

1) cs ファイルでバインディングを作成する場合、oject をバインディングの converterParameter に渡すことができます。ComboxColumn をコンバーターに渡すことができます。

2) 列要素を使用して、現在選択されているシリーズ ID と DataContext(ContactArrangement) を取得し、親コントロールの DataContext (PNSery コレクション) を取得します。

3) foreach を使用して正しい PNSery オブジェクトを列挙し、ContactArrangment オブジェクトに割り当てます。

于 2013-06-13T07:28:28.317 に答える