下面你可以看到我的班级定义的一部分:
public class Package {
public int PackageId { get; set; }
public string Name { get; set; }
}
public class Member {
public int MemberId { get; set; }
public string DisplayName { get; set; }
}
public class MemberPackage {
public int PackageId { get; set; }
public int MemberId { get; set; }
public DateTime DateSold { get; set; }
public Member Member { get; set; }
public Package Package { get; set; }
}
这些是EF 4模型类。我从WCF RIA服务中提取MemberPackage对象,并将它们绑定到UI上的DataGrid。为了显示包名,我使用了如下所示的绑定语法:
<sdk:DataGridTextColumn Header="Package Name" Binding="{Binding Path=Package.Name}" />
<sdk:DataGridTextColumn Header="Date Sold" Binding="{Binding DateSold}" />
“包名称”列下没有任何内容,但我可以看到“已售出日期”值。这里发生了什么,它不应该以这种方式工作吗?
提前致谢。
答案 0 :(得分:0)
这与视图的数据上下文有关 - 您确定Package是视图模型(数据上下文)的属性,模型是否实现了INotifyPropertyChanged?
答案 1 :(得分:0)
只需删除Path=
即可:
<sdk:DataGridTextColumn Header="Package Name" Binding="{Binding Package.Name}" />
您无需指定路径。
如果这不起作用,那么您应该确保Package
MemberPackage
成员在服务器端定义中具有[Include]
属性。这将确保整个层次结构序列化到客户端。我最初没有建议这个,因为我认为您的代码已被编辑。
答案 2 :(得分:0)
问题可能是当您在服务/工厂中获得MemberPackages时,请确保您具有.Include(“Package”),如下所示:
return this.ObjectContext.MemberPackages
.Include("Package");
这应该将Package详细信息作为MemberPackage的一部分返回,然后您对Package.Name的绑定应该有效。