DataGrid列宽同步

时间:2012-09-26 19:04:02

标签: wpf

我有一个列表框,哪些项目是水平构建的。

我还有一个DataGrid,它的列是动态构建的。

每个ListBoxItem都与DataGrid列相对应

我想在DataGrid列和右侧ListBoxItem之间进行同步,因此每个ListBoxItem将与列平行。此外,在调整列大小时,它将更改ListBoxItem的大小。 我该怎么办?

1 个答案:

答案 0 :(得分:2)

您可以将项目宽度与datagrid列的实际宽度

绑定
      <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>

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