我有一个包含从 UserControl 派生的项目的 ListBox。具体的 UserControl 包含(除其他外)一个 DataGrid。基本上我无法更改具体的 UserControl(仅出于测试目的而更改;它的第三方类型)。一旦将一个列宽设置为“*”,所有列的 DataGrid 列宽就会被破坏,这是填充整个空间所必需的。
我可以用一个简化的例子来重现它(没有用户控件)。因此,如果我将 DataGrid 添加为 ListBoxItem,指定列宽“*”会破坏列宽。顺便说一句,用户也不能再调整列的大小。
简单的例子:
<Window x:Class="DataGridSpike.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListBox HorizontalContentAlignment="Stretch" >
<!-- Column width is basically ok but only since not "*" -->
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="Column1"/>
<DataGridTextColumn Header="Column2"/>
<DataGridTextColumn Header="Column3"/>
</DataGrid.Columns>
</DataGrid>
<!-- Broken column width: -->
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="Column1"/>
<DataGridTextColumn Header="Column2" Width="*"/>
<DataGridTextColumn Header="Column3"/>
</DataGrid.Columns>
</DataGrid>
</ListBox>
</Grid>
有谁知道如何解决这一问题?
问候