Я новичок в XAML, и я не могу понять это. Я хочу, чтобы страница с двумя столбцами была состыкована (в терминах winforms) с контейнером. В первом столбце есть список, и я хочу, чтобы это автоматически показывало полосу прокрутки, когда это необходимо. Я смог сделать это, но только если я установил Height или MaxHeight из ListBox. Моя проблема заключается в том, что список больше не будет увеличиваться в размерах при изменении размера основного окна/формы. Я хочу, чтобы прикрепить список к первому столбцу, чтобы он изменил размер при изменении размера формы и при необходимости отобразил полосу прокрутки.Как добавить панель прокрутки в Listbox в сетке в XAML?
Вот код не показывает полосу прокрутки:
<Window x:Class="WpfApplication3.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">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Grid.Row="0">
<ListBox x:Name="lstView"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Margin="10">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="20">
<TextBlock Text="{Binding}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Grid>
Вот код, который показывает полосу прокрутки, но имеет фиксированную высоту.
<Window x:Class="WpfApplication3.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">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Grid.Row="0">
<ListBox x:Name="lstView"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Height="200"
Margin="10">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="20">
<TextBlock Text="{Binding}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Grid>
Попробуйте изменить высоту строки в строке «*» вместо «Авто» и удалите высоту списка –
. Поместите холст с высотой и шириной внутри панели стека и поместите список в холст. – madan
Я пробовал, но ведет себя одинаково. нет полосы прокрутки, если высота в ListBox не указана. если я укажу высоту, список не будет расти. – doms