Я пытаюсь создать динамическую таблицу в WPF на основе элемента ItemsControl. В идеале я хочу, чтобы каждый элемент коллекции отображался с определенным стилем и располагался 3 по таблице, прежде чем он обертывается и переходит к следующей строке. Он работает ЧРЕЗМЕРНО, единственная проблема заключается в том, что у меня ширина около 30 пикселей пустого пространства после записи 3 в списке. Если вы добавите цифры, вы увидите, что текстовые блоки + margin равны 140, поэтому 3 из них - 420 - ширина таблицы равна 450, поэтому есть проблема, о которой вы подумаете.WrapPanel не заполняется до полной требуемой ширины
К сожалению, нет.
Если я увеличиваю первый текстовый блок до ширины 110 вместо 105, просто небольшое изменение, которое даст общую ширину для 3 записей из 435, еще меньше 450, - это ширина таблицы, затем он обертывается только после двух записей и оставляет большое пустое пространство справа.
Мое подозрение, что это может быть связано с «зарезервированным пространством», которое WPF удерживает для вертикальной полосы прокрутки, так как обычно это ширина 20, что дает мое полезное пространство как 430, а 435 - выше, поэтому обертывания.
Мой вопрос: как скрыть все полосы прокрутки и заставить их вообще не отображать или удерживать зарезервированное пространство, чтобы я мог использовать всю ширину элемента управления элементами?
XAML ниже
<ItemsControl ItemsSource="{Binding TradeCategories}" Grid.Row="1">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" MaxWidth="450" Background="{StaticResource SubTableRow}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" MaxWidth="150">
<TextBlock Width="105" FontSize="10" Text="{Binding CategoryName}" Foreground="{StaticResource SubTableText}" Margin="5,0,0,0"/>
<TextBlock Width="25" FontSize="10" Text="{Binding CategoryCount}" TextAlignment="Center" Background="{StaticResource SubTableHighlightCell}" Foreground="{StaticResource SubTableText}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
по умолчанию шаблон ItemsControl не имеет 'ScrollViewer'. Если вы не отмените это самостоятельно, он не должен содержать полосы прокрутки. –
Вы можете видеть любые полосы прокрутки? Я почти уверен, что 'ItemsControl' не имеет ... у' ListBox' есть внутренний 'ScrollViewer', но' ItemsControl' этого не делает. – Sheridan
Хм, ладно, это не так. Но вернемся к моей первоначальной проблеме, я не могу заполнить более 420 ширины вышеприведенной таблицы. Панель обертки имеет MaxWidth 450, поэтому она должна соответствовать 3 элементам ширины 150. Но если элементы имеют ширину более 140, то только два дисплея на строку и остальные обертывания, поэтому панель обертки не используется полностью – NZJames