UserControl에서 파생 된 항목이 포함 된 ListBox가 있습니다. 구체적 UserControl에는 DataGrid가 포함되어 있습니다. 기본적으로 구체적인 UserControl을 변경할 수 없습니다 (테스트 목적으로 만 변경, 타사의 종류). 전체 열을 채우기 위해 필요한 하나의 열 너비가 "*"로 설정되면 모든 열의 DataGrid 열 너비가 깨집니다.wpf ListBox의 Datagrid 열 너비가 잘못되었습니다.
간단한 예제 (UserControl 제외)로 재현 할 수 있습니다. 그래서 DataGrid를 ListBoxItem으로 추가하면 "*"의 열 너비를 지정하면 열 너비가 깨집니다. BTW, 더 이상 사용자가 열의 크기를 조정할 수 없습니다.
간단한 예 :
<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>
사람이이 문제를 해결하는 방법을 알고 있나요?
감사합니다.
두렵습니다. Width = "Auto"는 내용의 크기를 나타내지 만 "*"는 사용 가능한 공간에 _expand_가됩니다. 나는 후자가 필요하다. BTW, Width = "Auto"는 Width가 지정되지 않은 경우 기본값입니다 - AFAIK. 그래서 Width = "Auto"는 제 예제의 첫 번째 ListBoxItem과 같습니다. – user2261015