SeveralotherquestionsonSO đã đi đến kết luận tương tự Tôi có - sử dụng một ItemsControl
với một DataTemplate
cho từng hạng mục xây dựng để ghi vị trí như vậy rằng chúng giống với một lưới điện đơn giản hơn nhiều (đặc biệt là định dạng) hơn là sử dụng một ListView
.WPF - Làm thế nào để ngăn chặn cột một ItemsControl giả lưới từ múa/nhảy xung quanh trong bố trí
Mã này tương tự như:
<StackPanel Grid.IsSharedSizeScope="True">
<!-- Header -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Column1" />
<ColumnDefinition Width="Auto" SharedSizeGroup="Column2" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Column Header 1" />
<TextBlock Grid.Column="1" Text="Column Header 2" />
</Grid>
<!-- Items -->
<ItemsControl ItemsSource="{Binding Path=Values, Mode=OneWay}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Column1" />
<ColumnDefinition Width="Auto" SharedSizeGroup="Column2" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding ColumnProperty1}" />
<TextBlock Grid.Column="1" Text="{Binding ColumnProperty2}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
Vấn đề tôi đang nhìn thấy là bất cứ khi nào tôi trao đổi các đối tượng mà ItemsSource
là ràng buộc (nó là một ObservableCollection
mà tôi thay thế các tham chiếu đến, chứ không phải là rõ ràng và tái -add), toàn bộ 'lưới' nhảy múa trong vài giây.
Có lẽ nó đang thực hiện một vài lần bố cục để nhận tất cả các cột Auto
-độ rộng để khớp.
Điều này rất mất tập trung cho người dùng của tôi và tôi muốn nó được phân loại. Đã có người khác nhìn thấy điều này?
Tôi gặp vấn đề tương tự. Bạn đã bao giờ nhận được một giải pháp này? –
@Rick: tiếc là không, tôi chưa bao giờ tìm ra những gì đang xảy ra ở đây. Thật khó chịu khi tôi chỉ chọn các cột có chiều rộng cố định, mặc dù tất nhiên là đi kèm với một tập hợp các vấn đề khác. Đó là tội ác ít hơn, trong trường hợp của tôi. –
@Rick, bạn có lưu trữ bên trong WinForms không? Sẽ rất tốt nếu có được một trường hợp repro cho việc này. Bạn đang sử dụng phiên bản .NET nào? Tôi đã sử dụng 3,5 (pre-SP1). –