0

アイテムが水平に構築されたリストボックスがあります。

また、列が動的に構築される DataGrid があります。

各 ListBoxItem は DataGrid 列に対応しています

DataGrid 列と右の ListBoxItem の間で同期したいので、各 ListBoxItem は列に平行になります。また、列のサイズを変更すると、ListBoxItem のサイズが変更されます。どうすればできますか?

4

1 に答える 1

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>

動的に作成する場合は、コードでバインディングを設定します。

于 2012-09-26T19:28:07.160 に答える