将嵌套字段绑定到devexpress Grid列

时间:2013-11-06 21:37:05

标签: c# wpf xaml mvvm devexpress

我有一个属性,它是ViewModel中的嵌套对象,我在视图中创建一个CollectionViewSource并绑定到该属性。 (obj是对象)

<CollectionViewSource Source="{Binding obj.myObjs}" x:Key="MyObjView" >
            <CollectionViewSource.SortDescriptions>
                <scm:SortDescription PropertyName="Name" Direction="Ascending"/>
            </CollectionViewSource.SortDescriptions>
        </CollectionViewSource>

然后将此视图绑定到网格

<dxg:GridControl x:Name="Grid" ItemsSource="{Binding Source={StaticResource MyObjView}}" SelectedItem="{Binding myObj1}">

  <dxg:GridColumn Header="All" FieldName="Disc"/>
  <dxg:GridColumn Header="Adj" FieldName="Adjust"/>
 <dxg:GridColumn Header="Name" FieldName="Acct.Name"/>
 </dxg:GridControl>

但是现在第三列没有显示任何数据。我认为因为FieldName没有进入嵌套,所以我尝试使用DisplayMemberBinding

<dxg:GridColumn Header="Name" DisplayMemberBinding="{Binding Acct.Name}" />

这也行不通。我想知道如何将网格列绑定到该嵌套属性?

2 个答案:

答案 0 :(得分:1)

相对于the DisplayMemberBinding property documentation,使用DisplayMemberBinding时应使用以下格式:

<dxg:GridColumn Header="Name" Binding="{Binding Path=RowData.Row.Acc.Name}"/> 

答案 1 :(得分:0)

看起来您可能需要Mode=OneWay(假设他们不允许更改标题中的帐户名称)。

DisplayMemberBinding="{Binding Acct.Name, Mode=OneWay}"