У меня есть пользовательский элемент управления со следующим XAML:
<ScrollViewer>
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<RichTextBox>
<Paragraph>
<Run Text="{Binding}"/>
</Paragraph>
</RichTextBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
И код позади:
public partial class MainPage {
public MainPage() {
InitializeComponent();
Items = new ObservableCollection<string>(Enumerable.Range(0, 100).Select(x => "some text"));
DataContext = this;
}
public ObservableCollection<string> Items { get; set; }
}
Когда этот код запускается, вертикальная полоса прокрутки ScrollViewer опускается вниз. Однако, если я удалю привязку в Run в RichTextBox и жестко закодирую текст:
<Run Text="some text"/>
Теперь полоса прокрутки остается вверху (как я и ожидал).
Это ошибка? Если нет, то что происходит? Как я могу это исправить (примечание: это упрощенный XAML, мне нужен ScrollViewer, потому что ListBox фактически находится в сетке)?