2011-06-14 125 views
1

我正在使用EF4,并在我的域模型中有一个名为Applications的实体。应用程序有一个名为Status的导航属性。状态实体包含2个字段,StatusID和StatusName。 我正在显示一个DataGrid,显示应用程序的详细信息。我用[Include]属性修饰了应用程序元数据,并且还修改了GetApplicationsQuery以包含一个.Include(“status”)语句。网格的ItemsSource是使用Linq查询在代码中设置的。Silverlight 4实体框架将DataGridColumn绑定到导航属性

如果我将DataGrid上的AutoGenerateColumns设置为true,则状态列指示存在状态对象,因此它看起来像包含工作正常。 我现在想要将AutoGenerateColumns设置为false并手动构建数据网格(仅显示几列),但我找不到如何将StatusName字段(属于状态导航属性)绑定到其中一列。下面的代码显然不起作用,因为我有效地将状态列绑定到对象,但绑定到导航属性上的字段的正确方法是什么?

<telerik:GridViewDataColumn Header="App Name" DataMemberBinding="{Binding AppName}"/> 
<telerik:GridViewDataColumn Header="Commentary" DataMemberBinding="{Binding Commentary}"/> 
<telerik:GridViewDataColumn Header="Status" DataMemberBinding="{Binding **status**}"/> 

我试过绑定到status.StatusName,但我现在只是猜测。任何帮助,将不胜感激。

由于

中号

回答

0

发现这个问题。

而不是使用DomainService(本例中的GetApplicationsQuery)中定义的查询,我使用Linq查询(来自ctx.applications其中..........)。

生成的GetApplicationsQuery添加了.Include(“状态”)语句,但我的手动Linq查询没有。

设置我的DataGrid的ItemsSource使用GetApplicationsQuery()。其中​​(A => ....我当时能够使用2零件名称,status.StatusName访问导航属性。

中号