将RowDetailsTemplate中的列与DataGrid中的列同步

时间:2012-10-23 15:15:57

标签: c# wpf xaml wpf-controls wpfdatagrid

我想知道是否可以使用DataGrid.RowDetailsTemplate完成此操作?

Example

我希望当用户在DataGrid中选择一行时,该行的详细信息会显示在该行下方。到目前为止,我知道该怎么做。 问题是我希望RowDetailsTemplate中的时间列与DataGrid中的相应列同步?

1 个答案:

答案 0 :(得分:1)

<DataGrid.RowDetailsTemplate>
    <ItemContainerTemplate>                      
        <DockPanel >
           <Rectangle Name="LeftRect" DockPanel.Dock="Left" Width="{Binding ElementName=DG1, Path=Columns[0].ActualWidth}" Height="40" Fill="Red"></Rectangle>
           <Rectangle Name="RightRect" Height="40" Fill="Yellow"></Rectangle>
        </DockPanel>
    </ItemContainerTemplate>                
</DataGrid.RowDetailsTemplate>

这里我使用了一个带有2 Rectangle作为Item容器的DockPanel,为了简单起见,你可以使用Grid / Panels。 诀窍是将LeftRect的Width绑定到Width第一列的DataGrid并将其标记为Dock=Left。因为,DockPanel这个空间的其余部分将由RightRect填充。

您可以使用RelativeSourceElemenatName来执行此操作。在这里,我使用了ElementName,其中DG1是我的DataGrid控件的名称。

还要确保在DataGrid上设置RowDetailsVisibilityMode="VisibleWhenSelected"