Mam ListBox zawierający elementy pochodzące z UserControl. Konkretny UserControl zawiera (między innymi) DataGrid. Zasadniczo nie mogę zmienić konkretnego UserControl (zmiany tylko w celu testowania, jego rodzaju strony trzeciej). Szerokość kolumny DataGrid wszystkich kolumn zostanie zerwana, gdy tylko jedna szerokość kolumny zostanie ustawiona na "*", co jest wymagane do wypełnienia całego obszaru.wpf Niepoprawna szerokość kolumn danych w ListBox
Mogę odtworzyć go w uproszczonym przykładzie (bez UserControl). Więc jeśli dodaję DataGrid jako ListBoxItem, określenie szerokości kolumny "*" powoduje podział szerokości kolumny. BTW, kolumny nie mogą już być zmieniane przez użytkownika.
Prosty przykład:
<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>
Czy ktoś wie jak rozwiązać ten problem?
Pozdrowienia
Obawiam się, że tak nie będzie. Width = "Auto" zmieni rozmiar na zawartość, a "*" _expand_ na dostępne miejsce. Potrzebuję tego drugiego. BTW, Width = "Auto" jest ustawieniem domyślnym, jeśli szerokość nie jest określona - AFAIK. So Width = "Auto" będzie takie samo jak 1. ListBoxItem w moim przykładzie. – user2261015