Вместо использования StackPanel
используйте UniformGrid
Предоставляет способ размещения контента в сетке, где все ячейки в сетке имеют одинаковый размер.
blockquote>и привязать число столбцов к числу элементов в списке и отключить функцию горизонтальной прокрутки.
<ListBox ... ItemsSource="{Binding AllItemsList}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" > <ListBox.ItemsPanel> <ItemsPanelTemplate> <UniformGrid Rows="1" Columns="{Binding AllItemsList.Count}"/> </ItemsPanelTemplate> </ListBox.ItemsPanel> <ListBox.ItemContainerStyle> <Style TargetType="{x:Type ListBoxItem}"> <!-- style --> </Style> </ListBox.ItemContainerStyle> </ListBox>
Удалось найти гораздо лучшее решение проблемы, не пробираясь сквозь стол. Я думал, что опубликую решение здесь для любого, кто может столкнуться с подобной проблемой.
Требование для хранимой процедуры состояло в том, чтобы проходить по большой таблице по одной строке за раз, объединяя содержимое каждого столбца в строке в строку и назначая ее переменной. Каждые N строк этой переменной будут записаны в отдельную таблицу. Ранее я использовал курсор для этого, но разработчик в нашей команде обнаружил гораздо более быстрый способ, используя предложение WITH.
INSERT INTO <MY_SCHEMA>.<MY_TABLE_THAT_WILL_CONTAIN_THE_CONCATENATED_VALUES_OF_EVERY_N_ROWS>
WITH
CONCATENATE_ROWS AS (
SELECT RANK() OVER (ORDER BY <PRIMARY_KEY_COLUMN>) AS ROWID, <PRIMARY_KEY_COLUMN>, <COLUMN_1> || '' || <COLUMN_2> || '' || ... <COLUMN_N> AS ROW_DETAIL
FROM <MY_TABLE_THAT_I_AM_QUERYING>
ORDER BY <PRIMARY_KEY_COLUMN>
),
GROUPED_ROWS AS (
SELECT (((CONCATENATE_ROWS.ROWID-1)/ <number of rows I want to concatenate, e.g.: 10>)+1) AS GROUPID, CAST(LIST(CONCATENATE_ROWS.ROW_DETAIL, '' ORDER BY <PRIMARY_KEY_COLUMN>) AS VARCHAR(4000)) AS CONCAT_DETAILS
FROM CONCATENATE_ROWS
GROUP BY (((CONCAT_ORDERS.ROWID-1)/ <number of rows I want to concatenate, e.g.: 10>)+1)
)
SELECT <Whatever columns I want to insert into <MY_TABLE_THAT_WILL_CONTAIN_THE_CONCATENATED_VALUES_OF_EVERY_N_ROWS>>
FROM GROUPED_ROWS;