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; }
}
}
Результат: