Ho un ListBox che contiene elementi derivati da UserControl. Il concreto UserControl contiene (tra gli altri) un DataGrid. Fondamentalmente non posso cambiare il concreto UserControl (cambia solo a scopo di test, il suo tipo di terze parti). La larghezza della colonna DataGrid di tutte le colonne viene interrotta non appena una larghezza di colonna è impostata su "*", che è necessario per riempire lo spazio completo.wpf Larghezza colonne Datagrid non riuscite in ListBox
Posso riprodurlo con un esempio semplificato (senza UserControl). Quindi se aggiungo un DataGrid come ListBoxItem, specificando una larghezza di colonna di "*" si rompe la larghezza della colonna. A proposito, le colonne non possono più essere ridimensionate dall'utente.
semplice esempio:
<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>
Qualcuno sa come risolvere questo problema?
saluti
Ho paura che non lo farà. Width = "Auto" ridimensionerà il contenuto, mentre "*" sarà _expand_ nello spazio disponibile. Ho bisogno di quest'ultimo. BTW, Larghezza = "Auto" è l'impostazione predefinita se Larghezza non è specificata - AFAIK. So Width = "Auto" sarà uguale al 1st ListBoxItem nel mio esempio. – user2261015