У меня есть контейнер в Xaml (в настоящее время StackPanel, который, я знаю, не самый лучший, но единственное, что работает нормально для меня).Внутри этого контейнера мне нужно создать неопределенное количество списков (максимум 10) в файле cs.Проблема в том, что когда списки длинные, у них нет полосы прокрутки, если я не ограничиваю высоту StackPanel, но это ограничивает отзывчивость приложения.Использование Grid также проблематично, так как мне нужен контейнер для обработки размещения каждого нового созданного ListView.Я также видел похожие решения, но они всегда ссылаются на списки просмотра в Xaml, а не на C #.
Мой код Xaml:
<Grid VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel Name ="sensorDataStackPanel" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top">
<ComboBox x:Name="sensorComboBox" PlaceholderText="Pick sensor" ItemsSource="{x:Bind Path=sensors_collection}"
SelectionChanged="SensorComboBox_SelectionChanged"/>
<StackPanel Name="AxiseslistViewStackPanel" Orientation="Horizontal" MaxHeight="300"/>
</StackPanel>
</Grid>
Код C # -> когда пользователь выбирает датчик в ComboBox в спискахсоответственно создаются внутри StackPanel:
public sealed partial class Layout_Tab : Page
{
public ObservableCollection<Sensor> sensors_collection;
public ObservableCollection<Axis> axises;
.......
private void SensorComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBox comboBox = sender as ComboBox;
Sensor chosen_sensor = (Sensor)comboBox.SelectedItem;
axises = chosen_sensor.axisesList;
this.AxiseslistViewStackPanel.Children.Clear();
foreach(var axis in axises)
{
ListView listView = new ListView { Header = axis.AxisName, SelectionMode = ListViewSelectionMode.Multiple,
ShowsScrollingPlaceholders =true, CanBeScrollAnchor = true};
foreach(var antenna in axis.inUseAntennaList)
{
listView.Items.Add(antenna);
}
this.AxiseslistViewStackPanel.Children.Add(listView);
}
}
}
Это изображение с определенной высотой StackPanel:
![2 lists example with viewlist](https://i.stack.imgur.com/XFPsZ.png)
Спасибо за все
РЕДАКТИРОВАТЬ: После перехода в GridView все еще получить те же результаты:
<GridView Name="AxiseslistViewStackPanel" ItemsSource="{x:Bind axises}">
<GridView.ItemTemplate>
<DataTemplate x:DataType="tests:Axis">
<StackPanel>
<TextBlock Text="{x:Bind AxisName}"/>
<ListView ItemsSource="{x:Bind inUseAntennaList}" ScrollViewer.VerticalScrollMode="Enabled" ScrollViewer.IsVerticalRailEnabled="True" ScrollViewer.VerticalScrollBarVisibility="Visible"/>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
Вот как GridView без ограничения высоты: ![enter image description here](https://i.stack.imgur.com/ujenS.png)