绑定不适用于导航属性

时间:2009-12-29 22:17:26

标签: wpf lazy-loading datacontext binding

我将WPF与Entity-Framework绑定。

Window.DataContext属性设置为Quote。 这个Quote有一个属性Job,我必须触发Quote.JobReference.Load它应该从服务器加载。

<ContentControl Content="{Binding Job}" 
    ContentTemplate="{StaticResource JobTemplateSummary}"/>

如上所示,我正在尝试将ContentControl绑定到DataContext StaticResource类的Quote窗口。

我在Window.Load偶数处理程序中调用Load。 我应该在其他地方打电话吗?

1 个答案:

答案 0 :(得分:0)

问题是导航属性默认不调用PropertyChanged事件,所以当绑定窗口时(在Page_Load处理程序之前)JobReference仍未加载,我们必须调用Quote.OnPropertyChanged("Job")当job属性发生更改时显式,因此WPF UI知道刷新控件绑定。

我将以下内容添加到Quote类中,这解决了问题:

Public Sub New()
    AddHandler JobReference.AssociationChanged, _
        AddressOf Job_AssociationChanged
End Sub

Sub Job_AssociationChanged(sender As Object, e As CollectionChangeEventArgs)
    OnPropertyChanged("Job")
End Sub