Ich habe eine ListBox, die Elemente enthält, die von UserControl abgeleitet werden. Das konkrete UserControl enthält (unter anderem) ein DataGrid. Grundsätzlich kann ich das konkrete UserControl nicht ändern (Änderungen nur zu Testzwecken; seine Art von Dritten). Die DataGrid-Spaltenbreite aller Spalten wird unterbrochen, sobald eine Spaltenbreite auf "*" gesetzt wird, was zum Füllen des gesamten Speicherplatzes erforderlich ist.wpf DataGrid-Spaltenbreite schlägt in ListBox fehl
Ich kann es mit einem vereinfachten Beispiel (ohne UserControl) reproduzieren. Wenn ich also ein DataGrid als ListBoxItem hinzufüge, bricht eine Spaltenbreite von "*" die Spaltenbreite ab. Übrigens, die Spalten können vom Benutzer nicht mehr geändert werden.
Einfaches Beispiel:
<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>
Wer weiß, wie dieses Problem beheben?
Grüße
Ich fürchte, es wird nicht. Width = "Auto" wird auf den Inhalt skaliert, während "*" auf den verfügbaren Platz _expand_ wird. Ich brauche Letzteres. BTW, Width = "Auto" ist der Standardwert, wenn Breite nicht angegeben ist - AFAIK. Also Width = "Auto" ist das selbe wie das 1. ListBoxItem in meinem Beispiel. – user2261015