【问题标题】:Binding doesn't work for navigation properties绑定不适用于导航属性
【发布时间】:2009-12-29 22:17:26
【问题描述】:

我正在将 WPF 与 Entity-Framework 绑定。

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

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

正如您在上面看到的,我正在尝试将ContentControl 绑定到窗口的DataContext,这是一个StaticResource Quote 类。

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

【问题讨论】:

  • 你为什么要问自己这个问题?因为它不起作用,还是因为您想要更好的解决方案?
  • 因为它不起作用。所以当我找到解决方案时,我认为与社区分享而不是删除整个线程是公平的;以便人们在将来遇到类似问题时可以享受。

标签: wpf lazy-loading datacontext binding


【解决方案1】:

问题是导航属性默认不调用PropertyChanged事件,所以当窗口被绑定时(在Page_Load处理程序之前)JobReference仍未加载,我们必须在作业时显式调用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-04
    • 2018-03-24
    • 1970-01-01
    • 2016-06-06
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多