2012-09-26 50 views
0

我有一个列表框,其中的项目是水平构建的。DataGrid列宽同步

另外我有一个DataGrid,其列是动态构建的。

每个ListBoxItem的被coresponding到DataGrid列

我想数据网格列和右ListBoxItem的间同步,所以每个ListBoxItem的将平行于一列。此外,在调整列的大小时,它将更改ListBoxItem的大小。 我该怎么做?

回答

2

您可以到DataGrid的列项宽度结合ActualWidth的

 <StackPanel Grid.Column="1" Orientation="Vertical"> 
      <DataGrid Grid.IsSharedSizeScope="True"> 
       <DataGrid.Columns> 
        <DataGridTextColumn Header="Some col 1" x:Name="first" /> 
        <DataGridTextColumn Header="Some col 2" x:Name="second" /> 
        <DataGridTextColumn Header="Some col 3" /> 
       </DataGrid.Columns> 

      </DataGrid> 

      <ListBox> 
       <ListBox.ItemsPanel> 
        <ItemsPanelTemplate> 
         <StackPanel IsItemsHost="True" Orientation="Horizontal" /> 
        </ItemsPanelTemplate> 
       </ListBox.ItemsPanel> 
       <Button Content="button 1" Width="{Binding Path=ActualWidth, ElementName=first}"></Button> 
       <Button Content="button 2" Width="{Binding Path=ActualWidth, ElementName=second}"></Button> 
      </ListBox> 
     </StackPanel> 

如果你创建它们动态,在代码中设置绑定。