2009-12-29 79 views
0

我将WPF与Entity-Framework绑定在一起。绑定不适用于导航属性

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

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

正如你可以在上面看到,我想一个ContentControl绑定到窗口的DataContext这是一个StaticResourceQuote类。

我打电话给Window.Load甚至处理程序。 我应该在其他地方打电话吗?

+0

你为什么要问自己这个问题?因为它不起作用,或者因为你想要更好的解决方案? – 2009-12-29 22:34:52

+0

因为它不起作用。 因此,当我找到解决方案时,我认为它会公平地与社区共享,而不是删除整个线程;所以人们在将来遇到类似问题时可以享受。 – Shimmy 2009-12-29 23:14:45

回答

0

问题在于导航属性默认情况下不会调用PropertyChanged事件,所以当窗口被绑定时(在Page_Load处理程序之前),JobReference仍未加载时,我们必须在job属性更改时显式调用Quote.OnPropertyChanged("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