WPF Прокрутите униформу

Мне нужно отобразить все файлы, расположенные по определенному пути. Я создал пользовательский элемент управления, который содержит текстовые блоки для сведений о файле (имя, размер, расширение и т. Д.), Этот элемент управления будет дочерним элементом единой сетки.

Проблема в том, что если моя сетка 5x5 и у меня более 25 файлов, 26-й элемент не отображается.

Хотелось бы узнать, есть ли способ прокручивать содержимое единой сетки?

Я знаю, что могу использовать список и привязку (я все еще читаю об этом), но мне нужно добавить элементы управления программно, потому что элемент управления имеет событие, и я подписываюсь на него, когда создается новый экземпляр usercontrol создается и затем добавляется в дочерний массив.

Я видел этот пост, и я уже поместил uniforgrid в ItemsControl, но он не работает вообще, это мой xaml:

<ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" >
    <ItemsControl x:Name="gridArchivos">
        <ItemsControl.ItemsPanel >
            <ItemsPanelTemplate >
                <UniformGrid Columns="5" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>                    
</ScrollViewer>

Согласно сообщению, должны быть указаны только столбцы или строки, но не оба. Итак, всего 5 цв. Я не хочу хризонтальную прокрутку, только вертикальную.

Спасибо за ваше время.

1 ответ

Решение

Я скопировал твой Xaml и, кажется, работает как ожидалось

Вот мой тестовый код, если он поможет вам диагностировать вашу проблему

Xaml:

<Window x:Class="WpfApplication7.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" Name="UI">
    <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" >
        <ItemsControl ItemsSource="{Binding Items, ElementName=UI}">
            <ItemsControl.ItemsPanel >
                <ItemsPanelTemplate >
                    <UniformGrid Columns="5"  />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
    </ScrollViewer>
</Window>

Код:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        for (int i = 0; i < 1000; i++)
        {
            Items.Add("Stackru"+i);
        }
    }

    private ObservableCollection<string> items = new ObservableCollection<string>();
    public ObservableCollection<string> Items
    {
        get { return items; }
        set { items = value; }
    }
}

Результат:

Другие вопросы по тегам