我有一个列表框,其中项目是水平构建的。
我还有一个 DataGrid,它的列是动态构建的。
每个 ListBoxItem 对应一个 DataGrid 列
我想在 DataGrid Column 和正确的 ListBoxItem 之间进行同步,因此每个 ListBoxItem 都将与一个列平行。此外,在调整列大小时,它会更改 ListBoxItem 的大小。我该怎么做?
我有一个列表框,其中项目是水平构建的。
我还有一个 DataGrid,它的列是动态构建的。
每个 ListBoxItem 对应一个 DataGrid 列
我想在 DataGrid Column 和正确的 ListBoxItem 之间进行同步,因此每个 ListBoxItem 都将与一个列平行。此外,在调整列大小时,它会更改 ListBoxItem 的大小。我该怎么做?
您可以将项目宽度与数据网格列实际宽度绑定
<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>
如果您动态创建它们,请在代码中设置绑定。