Это прекрасно работает для меня.Может быть, вы не показываете остальной код.Это то, что я сделал из вашего примера, и оно работает как положено ...
XAML:
<Window x:Class="WPF_Playground.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow">
<Grid>
<ScrollViewer VerticalScrollBarVisibility="Auto" CanContentScroll="True">
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Focusable" Value="False"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
</Grid>
</Window>
ViewModel:
using System.Collections.Generic;
using System.Windows;
namespace WPF_Playground
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public IEnumerable<Item> Items => new Item[]
{
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" },
new Item{ Text = "Something" }
};
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
}
public class Item
{
public string Text { get; set; }
}
}
Если вы измените размер окна,Полоса прокрутки появится, когда размещенный элемент управления больше не сможет отобразить все элементы управления.Довольно много стандартного.