В моем приложении есть следующий макет страницы:
<Grid x:Name="ContentPanel"
Grid.Row="1">
<ScrollViewer x:Name="ScrollViewer1"
MaxHeight="600"
VerticalAlignment="Top"
HorizontalAlignment="Stretch">
<StackPanel x:Name="StackPanel1" >
<TextBlock x:Name="TextBlock1" />
<toolkit:ListPicker x:Name="ListPicker1" />
<TextBlock x:Name="TextBlock2" />
<TextBox x:Name="TextBlock3" />
<TextBlock x:Name="TextBlock4" />
<StackPanel x:Name="StackPanel2" >
<TextBlock x:Name="TextBlock5" />
<Image x:Name="Image1"/>
</StackPanel>
<ListBox x:Name="ListBox1">
<!--Customize the ListBox template to remove the built-in ScrollViewer-->
<ListBox.Template>
<ControlTemplate>
<ItemsPresenter />
</ControlTemplate>
</ListBox.Template>
<ListBox.ItemTemplate>
<DataTemplate>
<!-- .... -->
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment"
Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</StackPanel>
</ScrollViewer>
</Grid>
Я добавил внешний ScrollViewer
вместо использования ListBox
, потому что без него материал выше ListBox
занимая слишком много места и не оставляя достаточно места для просмотра содержимого ListBox
.
Теперь проблема в том, что если я добавляю элемент в конец ListBox
, метод ScrollIntoView
не работает.Поэтому мне нужно использовать метод ScrollViewer
ScrollToVerticalOffset
.
Я добавляю новый элемент в ObservableCollection
, который связан с ListBox
, когда пользователь нажимает кнопку на панели приложения.Как я могу вычислить значение, которое будет передано ScrollViewer.ScrollToVerticalOffset
?
Спасибо за вашу помощь!