Я использую EntityFramework, WPF и MVVM в своем приложении и у меня возникли некоторые проблемы с обновлением привязки данных отношений между EntityObjects. Я смог уменьшить свою проблему до нескольких строк XAML, и я надеюсь, что кто-то может мне помочь, поскольку я все еще не очень уверен в EF и MVVM.
В любом случае, мы идем с упрощенным XAML:
<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"/>
Я использую последние 3 ярлыка для проверки привязки данных. Изменение File.SentDate с использованием DatePicker без проблем обновляет привязку данных до последней метки.
Теперь File имеет тип EntityObject и имеет свойство SenderId типа GUID. Он также имеет отношение к моим контактам через свойство отправителя. Обязательно, SenderId - это GUID соответствующего Contact EntityObject, который связан с File через отношение Sender. Файл может иметь только одного отправителя типа «Контакт».
В любом случае происходит следующее: когда я выбираю другого отправителя с помощью комбинированного списка, метка, отображающая свойство File.SenderId, корректно обновляется. Однако тот, у которого есть свойство File.Sender.Name, то есть тот, который использует отношение, не обновляется.
Так что я предполагаю, что есть что-то особенное в обновлении связей данных в EF.
Может кто-нибудь предложить решение этого вопроса?