我在我的應用程序中使用了EntityFramework,WPF和MVVM,並且在更新EntityObjects之間的關係數據綁定時遇到了一些問題。我能夠將我的問題縮小到只有幾行XAML,我希望有人能夠幫助我,因爲我對EF和MVVM還不是很有信心。EF EntityObject不更新關係的數據綁定
無論如何,在這裏我們去與簡化的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個標籤來測試我的數據綁定。使用DatePicker更改File.SentDate會將數據綁定更新爲最後一個Label,而不會出現問題。
現在文件屬於EntityObject類型,並且有一個類型爲GUID的SenderId屬性。它也通過發件人屬性與我的聯繫人有關係。但是,SenderId是通過發件人關係與文件相關的相應聯繫人實體對象的GUID。一個文件只能有一個Contact類型的發件人。
不管怎樣,當我使用組合框選擇另一個發件人時,顯示File.SenderId屬性的Label會得到正確更新。但是,具有File.Sender.Name屬性的文件,即使用reléationship的文件不會被更新。
所以我猜測,關於更新EF中關係的數據綁定有一些特殊之處。
有人可以請建議一個解決方案嗎?
謝謝。很高興知道這與我的愚蠢無關。雖然早些時候知道這會節省我幾個小時抓我的頭:-) –