我想知道是否可以用DataGrid.RowDetailsTemplate
完成此操作?將RowDetailsTemplate中的列與DataGrid中的列同步
我想,當用戶在DataGrid
選擇一行,約行詳細信息下排顯現。到目前爲止,我知道該怎麼做。 問題是我希望RowDetailsTemplate
中的時間列與DataGrid
中的相應列同步?
我想知道是否可以用DataGrid.RowDetailsTemplate
完成此操作?將RowDetailsTemplate中的列與DataGrid中的列同步
我想,當用戶在DataGrid
選擇一行,約行詳細信息下排顯現。到目前爲止,我知道該怎麼做。 問題是我希望RowDetailsTemplate
中的時間列與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>
這裏我使用了一個DockPanel中有2 Rectangle
作爲項目容器爲簡單起見,你可以在你的表格/面板。 訣竅是將LeftRect的Width
綁定到DataGrid
的第一列的Width
,並將其標記爲Dock=Left
。因爲,這是DockPanel
其餘的空間將由RightRect填充。
您可以使用RelativeSource
或ElemenatName
來做到這一點。這裏我使用了ElementName
,其中DG1是我的DataGrid
控件的名稱。
還要確保您在DataGrid上設置了RowDetailsVisibilityMode="VisibleWhenSelected"
。
謝謝:-) 但我怎麼能讓我的第一列在子表中具有與主表中的列相同的寬度? – magol
改爲使用網格並將第1列的寬度與DataGrid的寬度以及第2列的寬度與DataGrid的其餘部分綁定。要計算其餘DataGrid的寬度,我假設你可以使用Converter來完成數學計算。 – NileshChauhan
還有一種方法。你可以嘗試凍結第一列嗎?我不確定它對RowDetailsTemplate有什麼影響。裁判:HTTP://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.frozencolumncount%28VS.95%29.aspx – NileshChauhan
不知道我是否理解這100%。 – NileshChauhan
我不怪你。我不擅長英語。 我希望當用戶點擊一行時,關於該行的更多細節出現在該行的下面。到目前爲止,我知道該怎麼做。問題是我希望看起來有一個與主表一樣寬的列的子表。 – magol
明白了你的觀點。檢查答案。並接受,如果你喜歡:-) – NileshChauhan