【问题标题】:Bind Nested Field to devexpress Grid column将嵌套字段绑定到 devexpress Grid 列
【发布时间】:2013-11-06 21:37:05
【问题描述】:

我有一个属性,它是 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}" />

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

【问题讨论】:

标签: c# wpf xaml mvvm devexpress


【解决方案1】:

根据the DisplayMemberBinding property documentation,您在使用 DisplayMemberBinding 时应使用以下格式:

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

【讨论】:

  • @SoftDev 在我的答案中没有任何与数据集相关的提示......RowData.Row 只是数据源中与当前行相对应的对象的路径。你试过我的解决方案吗?
【解决方案2】:

您可能需要在绑定中使用Mode=OneWay(假设他们不允许更改标题中的帐户名称)。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-01
  • 2011-04-27
相关资源
最近更新 更多