C# 将RowDetailsTemplate中的列与DataGrid中的列同步
我想知道是否有可能通过C# 将RowDetailsTemplate中的列与DataGrid中的列同步,c#,wpf,xaml,wpf-controls,wpfdatagrid,C#,Wpf,Xaml,Wpf Controls,Wpfdatagrid,我想知道是否有可能通过DataGrid.rowtailstemplate实现这一点 我希望当用户在DataGrid中选择一行时,该行的详细信息会显示在该行下。到目前为止我知道怎么做。 问题是我希望行详细信息模板中的时间列与数据网格中的相应列同步 <DataGrid.RowDetailsTemplate> <ItemContainerTemplate> <DockPanel >
DataGrid.rowtailstemplate
实现这一点
我希望当用户在DataGrid
中选择一行时,该行的详细信息会显示在该行下。到目前为止我知道怎么做。
问题是我希望行详细信息模板中的时间列与数据网格中的相应列同步
<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矩形的DockPanel作为项目容器,为简单起见,您可以使用网格/面板。
技巧是将LeftRect的宽度
绑定到DataGrid
的第一列的宽度
,并将其标记为Dock=Left
。因为,这是DockPanel
剩余的空间将由RightRect填充
您可以使用RelativeSource
或ElemenatName
来执行此操作。这里我使用了ElementName
,其中DG1是我的DataGrid
控件的名称
还要确保在DataGrid上设置了RowDetailsVisibilityMode=“VisibleWhenSelected”
。
这里,我使用了一个带有2矩形的DockPanel作为项目容器,为简单起见,您可以使用网格/面板。
技巧是将LeftRect的宽度
绑定到DataGrid
的第一列的宽度
,并将其标记为Dock=Left
。因为,这是DockPanel
剩余的空间将由RightRect填充
您可以使用RelativeSource
或ElemenatName
来执行此操作。这里我使用了ElementName
,其中DG1是我的DataGrid
控件的名称
还要确保您在DataGrid上设置了RowDetailsVisibilityMode=“VisibleWhenSelected”
。不确定我是否100%理解。我不怪您。我的英语不是很好。我希望当用户单击某一行时,该行的更多详细信息会显示在该行下方。到目前为止我知道怎么做。问题是,我希望子表中的列与主表中的列一样宽。明白你的意思了。检查答案。如果你愿意,一定要接受:-)不确定我是否100%理解。我不怪你。我的英语不是很好。我希望当用户单击某一行时,该行的更多详细信息会显示在该行下方。到目前为止我知道怎么做。问题是,我希望子表中的列与主表中的列一样宽。明白你的意思了。检查Ans。如果愿意,请接受:-)谢谢:-)但如何使子表中的第一列与主表中的列具有相同的宽度?请使用网格,并将列1的宽度与DataGrid的宽度绑定,将列2的宽度与DataGrid的其余部分绑定。要计算数据网格其余部分的宽度,我假设您可以使用转换器进行计算。你能试着冻结第一列吗?我不确定它对RowDetailsTemplate的影响。ref:谢谢:-)但如何使子表中的第一列与主表中的列具有相同的宽度?请改用网格,并将第1列的宽度与DataGrid的宽度绑定,将第2列的宽度与DataGrid的其余部分绑定。要计算数据网格其余部分的宽度,我假设您可以使用转换器进行计算。你能试着冻结第一列吗?我不确定它对RowDetailsTemplate的影响。裁判: