如何绑定到DataGrid RowDetails中父绑定的ICollection? (MVVM)

时间:2014-07-10 18:04:03

标签: wpf mvvm datagrid

我有一个datagrid,其行详细信息显示第二行,包含行的历史信息。我在XAML中有这段代码:

<DataGrid HorizontalAlignment="Stretch" Margin="5,5,5,5" Grid.Row="1" VerticalAlignment="Stretch"
                  ItemsSource="{Binding DgdTareas}"
                  SelectedIndex="{Binding DgdTareasSelectedIndex}"
                  RowDetailsVisibilityMode="{Binding DgdTareasDetallesVisibility}">


    <DataGrid.RowDetailsTemplate>
        <DataTemplate>
            <DataGrid AutoGenerateColumns="false" HorizontalAlignment="Stretch" Margin="5,5,5,5" Name="dgdTareasPiezasHistorico" VerticalAlignment="Stretch" Grid.Row="1"
                                  ItemsSource="{Binding Path=TareasPiezasHistorico}">
               <DataGrid.Columns>
                   <DataGridTextColumn Header="IDEstado" Binding="{Binding IDEstado, Mode=TwoWay}" />
               </DataGrid.Columns>
           </DataGrid>
       </DataTemplate>
   </DataGrid.RowDetailsTemplate>
</DataGrid>

主dataGrid,绑定Tareas类型的集合。该对象的ICollection类型为TareasHistorico。

所以我想第二个dataGrid的itemsSource是Tareas.TareasHistorico,但是我无法绑定这个属性。

感谢。

1 个答案:

答案 0 :(得分:1)

用作DataTemplate的{​​{1}}与DataGrid.RowDetailsTemplate的{​​{1}}具有相同的对象集,即DataContext类型的数据绑定集合中的项目{1}}。因此,您需要做的就是在内部DataGrid.ItemsTemplate属性的Tareas中使用ICollection类的Tareas属性的名称:

Binding Path

当然,您还必须确保该属性已声明为DataGrid.ItemsSource

相关问题