У меня есть TabControl с двумя вкладками , содержащими списки, которые всегда должны быть прокручены вниз :
<TabControl>
<TabItem Header="Tab1">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<ListBox x:Name="List1">
<ListBox.ItemTemplate>
<DataTemplate DataType="SampleClass">
<TextBlock Text="{Binding SampleProperty}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
</TabItem>
<TabItem Header="Tab2">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<ListBox x:Name="List2">
<ListBox.ItemTemplate>
<DataTemplate DataType="OtherSampleClass">
<TextBlock Text="{Binding SampleProperty}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
</TabItem>
</TabControl>
Теперь у меня есть события, настроенные таким образом, чтобы при изменении привязки выполнялся следующий код для прокрутки до конца списка (в зависимости от вкладки это пример того, что происходит при изменении элементов первого списка) ):
ListBox1.ScrollIntoView(items.Last<SampleClass>());
Это отлично работает. При изменении привязки ListBox прокручивается вниз, как и ожидалось.
Однако, когда я устанавливаю тот же код для выполнения при смене вкладок (для прокрутки к нижней части списка при изменении вкладок), списки не прокручиваются вниз, как ожидалось (и отображаются прокручиваемыми вверху ).
Я попытался подключиться к событию SelectionChanged в TabControl. Я предполагаю, что макет еще не отображается при выполнении этого события, поэтому вызов ScrollIntoView () ничего не делает.
Есть ли способ обойти это?
Спасибо.