0

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

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

每个 ListBoxItem 对应一个 DataGrid 列

我想在 DataGrid Column 和正确的 ListBoxItem 之间进行同步,因此每个 ListBoxItem 都将与一个列平行。此外,在调整列大小时,它会更改 ListBoxItem 的大小。我该怎么做?

4

1 回答 1

2

您可以将项目宽度与数据网格列实际宽度绑定

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

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

于 2012-09-26T19:28:07.160 回答