2012-10-23 75 views
0

我想知道是否可以用DataGrid.RowDetailsTemplate完成此操作?將RowDetailsTemplate中的列與DataGrid中的列同步

Example

我想,當用戶在DataGrid選擇一行,約行詳細信息下排顯現。到目前爲止,我知道該怎麼做。 問題是我希望RowDetailsTemplate中的時間列與DataGrid中的相應列同步?

+0

不知道我是否理解這100%。 – NileshChauhan

+0

我不怪你。我不擅長英語。 我希望當用戶點擊一行時,關於該行的更多細節出現在該行的下面。到目前爲止,我知道該怎麼做。問題是我希望看起來有一個與主表一樣寬的列的子表。 – magol

+0

明白了你的觀點。檢查答案。並接受,如果你喜歡:-) – NileshChauhan

回答

0
<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填充。

您可以使用RelativeSourceElemenatName來做到這一點。這裏我使用了ElementName,其中DG1是我的DataGrid控件的名稱。

還要確保您在DataGrid上設置了RowDetailsVisibilityMode="VisibleWhenSelected"

+0

謝謝:-) 但我怎麼能讓我的第一列在子表中具有與主表中的列相同的寬度? – magol

+0

改爲使用網格並將第1列的寬度與DataGrid的寬度以及第2列的寬度與DataGrid的其餘部分綁定。要計算其餘DataGrid的寬度,我假設你可以使用Converter來完成數學計算。 – NileshChauhan

+0

還有一種方法。你可以嘗試凍結第一列嗎?我不確定它對RowDetailsTemplate有什麼影響。裁判:HTTP://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.frozencolumncount%28VS.95%29.aspx – NileshChauhan