Tôi có một ListBox chứa các mục bắt nguồn từ UserControl. UserControl cụ thể chứa (trong số những người khác) một DataGrid. Về cơ bản tôi không thể thay đổi UserControl cụ thể (chỉ thay đổi cho mục đích thử nghiệm; loại bên thứ ba của nó). Chiều rộng cột DataGrid của tất cả các cột bị hỏng ngay sau khi một chiều rộng cột được đặt thành "*", được yêu cầu để lấp đầy không gian đầy đủ.wpf Chiều rộng cột Datagrid không thành công trong ListBox
Tôi có thể tạo lại bằng một ví dụ đơn giản (w/o UserControl). Vì vậy, nếu tôi thêm một DataGrid như ListBoxItem, chỉ định một chiều rộng cột của "*" phá vỡ chiều rộng cột. BTW, các cột cũng không thể được thay đổi kích thước bởi người dùng nữa.
ví dụ đơn giản:
<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>
Có ai biết làm thế nào để sửa lỗi này?
Kính trọng
Tôi sợ điều đó sẽ không xảy ra. Chiều rộng = "Tự động" sẽ kích thước nội dung, trong khi "*" sẽ _expand_ đến không gian có sẵn. Tôi cần cái sau. BTW, Chiều rộng = "Tự động" là mặc định nếu Chiều rộng không được chỉ định - AFAIK. Vì vậy, Width = "Auto" sẽ giống như ListBoxItem 1 trong ví dụ của tôi. – user2261015