我在Binding
列上使用DataGrid
,并在过去使用了Navigation Properties
预期结果。我正在使用其他字段来显示使用Navigation Properties
的这两个字段。对于它们所代表的字段,属性拼写正确。我通过Entity Framework
使用WCF
作为后端。当我检查通过WCF函数返回的CalenderChange对象时,我可以看到Navigation Property
和readonly
字段是_Firstname
并且具有我期望的值。我尝试将绑定更改为Binding="{Binding Personnel._Firstname}
但没有成功。
将其包含在查询中:
db.CalenderChanges.Include("Personnel").Where({condition}).ToList()
XAML:
<sdk:DataGridTextColumn Header="First Name" Binding="{Binding Personnel.Firstname}" Width="100" />
<sdk:DataGridTextColumn Header="Last Name" Binding="{Binding Personnel.Lastname}" Width="100" />
我错过了什么?感谢...
答案 0 :(得分:2)
如果您使用的是WCF Ria服务,通常的原因是因为使用Include(“人员”)是不够的。
要使Silverlight获取人员数据,您需要两个条件
db.CalenderChanges.Include("Personnel")
以便从数据库
Personnel导航属性的元数据标有[Include]
属性,因此人员由WCF编组到客户端。见https://stackoverflow.com/a/5332188/34461
样品
// ExtraMetadata.cs
// Add Reference to System.ComponentModel.DataAnnotations.dll
namespace MyModel
{
using System.ComponentModel.DataAnnotations;
// This attribute tells Ria Services that the metadata
// for the CalendarChange class is in CalenderChange.MetaData class
[MetadataType(typeof(CalenderChange.MetaData)]
public partial class CalenderChange {
public class MetaData {
// adding this attribute tells RIA services
// to also send this property across the wire
[Include]
public MetaData Personnel { get; set; }
}
}
}
参考: