私のアプリケーションでEntityFramework、WPF、MVVMを使用していて、EntityObjects間のリレーションシップのデータバインディングを更新する際にいくつかの問題があります。私は問題をXAMLのほんの数行に縮小することができました。私はまだEFとMVVMにはあまり自信がないので、誰かが私を助けてくれることを願っています。EF EntityObjectはリレーションシップのデータバインディングを更新しません
はとにかく、ここでは単純化されたXAMLで行く:私は私のデータバインディングをテストするために、最後の3つのラベルを使用してい
<DatePicker Grid.Row="2" Grid.Column="1"
SelectedDate="{Binding Path=File.SentDate,
StringFormat={}{0:dd/MM/yyyy}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
VerticalAlignment="Center" IsEnabled="{Binding Path=IsEnabled}"/>
<ComboBox Grid.Row="3" Grid.Column="1" ItemsSource="{Binding Contacts}" DisplayMemberPath="Name"
SelectedItem="{Binding Path=File.Sender, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEditable="True"
VerticalAlignment="Center">
</ComboBox>
<Label Content="{Binding Path=File.SenderId}" Grid.Row="4"/>
<Label Content="{Binding Path=File.Sender.Name}" Grid.Row="5"/>
<Label Content="{Binding Path=File.SentDate}" Grid.Row="6"/>
。 DatePickerを使用してFile.SentDateを変更すると、問題なくデータバインディングが最後のLabelに更新されます。
今すぐFileはEntityObject型で、GUID型のSenderIdプロパティを持ちます。また、Senderプロパティを介して連絡先との関係もあります。 Obserouly、SenderIdは、Sender関係を通じてFileに関連する対応するContact EntityObjectのGUIDです。ファイルには、連絡先タイプの単一の送信者が1人しか存在できません。
とにかく、コンボボックスを使って別の送信者を選択すると、File.SenderIdプロパティを表示するラベルが正しく更新されます。ただし、File.Sender.Nameプロパティを持つプロパティ、つまりreléationshipを使用するプロパティは更新されません。
私はEFで関係のデータバインディングを更新するために特別なことがあると思います。
誰かがこれに対する解決策を提案できますか?
ありがとう。それが私の愚かさに関係していないことを知りました。これを早期に知っていれば、私の頭を掻き集めるのに数時間を節約できたでしょう:-) –