У меня есть StackPanel, который заполняется пользовательскими UserControls. Я хотел бы включить горизонтальную полосу прокрутки в нижней части этой панели стека, которая позволяет пользователям просматривать прокрутку влево или вправо, чтобы просмотреть больше пользовательских элементов управления.HorizontalScrollBar на StackPanel
То, что у меня сейчас, пока оно работает, кажется неправильным в том смысле, что размер элемента ItemsPanel определяется ScrollViewer. Я имею в виду, что если я отрегулирую вертикальную полосу прокрутки и сжимаю ее, это также сжимает панель стека, и для ее просмотра мне нужно прокрутить вниз. Я попытался поместить ScrollViewer внутри элемента ItemsControl, но это не работает.
<Window x:Name="MainWindow" x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Test Generator" Height="464.5" Width="950">
<Grid>
<Menu DockPanel.Dock="Top" Height="22" VerticalAlignment="Top">
<MenuItem Header="_File">
<MenuItem Header="New"/>
<MenuItem Header="Open Template"/>
<MenuItem Header="Save Template"/>
<Separator />
<MenuItem Header="_Exit"/>
</MenuItem>
</Menu>
<Button Content="Load Template" HorizontalAlignment="Left" Margin="35,36,0,0" VerticalAlignment="Top" Width="98"/>
<Button Content="Add Col" HorizontalAlignment="Right" Margin="0,36,35,0" VerticalAlignment="Top" Width="75"/>
<Button x:Name="Generate_Data" Content="Generate Data Window" Height="22" Margin="0,36,0,0" VerticalAlignment="Top" Width="160" Click="Generate_Data_Click" HorizontalAlignment="Center"/>
<ScrollViewer HorizontalScrollBarVisibility="Visible" Margin="0,197,0,0">
<ItemsControl Name="userControlContainer" Margin="10,150,10,10" ItemsSource="{Binding MyCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
Это прекрасно работает, как мне нужно. Могу ли я спросить, где вы получили эту информацию, если вы посмотрели ее где-то в Интернете? –
У меня была аналогичная проблема, когда я впервые начал работать с custom ItemsControl, это был метод, который я придумал. Я посмотрел шаблон DefaultControl по умолчанию и увидел, как работает встроенный Scroll. Я не могу вспомнить, где, но я считаю, что использовал это как источник: https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemcontainerstyle(v=vs.110). ASPX –