我想知道是否可以使用DataGrid.RowDetailsTemplate
完成此操作?
我希望当用户在DataGrid
中选择一行时,该行的详细信息会显示在该行下方。到目前为止,我知道该怎么做。
问题是我希望RowDetailsTemplate
中的时间列与DataGrid
中的相应列同步?
答案 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填充。
您可以使用RelativeSource
或ElemenatName
来执行此操作。在这里,我使用了ElementName
,其中DG1是我的DataGrid
控件的名称。
还要确保在DataGrid上设置RowDetailsVisibilityMode="VisibleWhenSelected"
。