Como usar o ScrollViewer.ScrollToVerticalOffset?
Espero que isso não seja uma duplicata, mas não consigo encontrar nenhuma documentação ou exemplos sobre como realmenteusar ScrollToVerticalOffset()
. Estou usando-o em um aplicativo do Windows Phone 8, mas acho que ele ainda se aplica ao WP7 e ao Silverlight (embora, sinta-se à vontade para me corrigir se eu estiver errado).
Então aqui está minha configuração básica (pseudo-código da memória):
<phone.PivotItem>
<ScrollViewer>
<Grid Height="1500">
<Grid.RowDefinitions>
<!-- about 20 rows, all auto-height -->
</Grid.RowDefinitions>
<Border Grid.Row="0">
<TextBox x:Name="txt1" />
</Border>
<Border Grid.Row="1">
<TextBox x:Name="txt2" />
</Border>
<!-- ...... -->
<Border Grid.Row="19">
<TextBox x:Name="txt20" />
</Border>
</Grid>
</ScrollViewer>
</phone.PivotItem>
Então, como você pode ver, eu tenho umScrollViewer
dentro de umPivotItem
e dentro é umGrid
. NoGrid
há cerca de 20TextBox
s, cada um dentro de umBorder
. Estou dinamicamente definindo o foco para um dessesTextBox
s quando esta página é carregada, então sempre que eu definir o foco paraTextBox
# 6-20 (aproximadamente) - Eu tenho que rolar manualmente para baixo para vê-lo. Eu quero rolar automaticamente meuScrollViewer
de modo que o queTextBox
tem foco, será centralizado para o usuário ver.
odocumentação paraScrollToVerticalOffset()
diz:
Rola o conteúdo que está dentro do ScrollViewer até a posição de deslocamento vertical especificada.
E que aceita um tipo deSystem.Double
.
O que eu não entendo é A) o valor que eu deveria passar, e B) como eu poderia até obter esse valor? É suposto ser um número entre 0 e a altura da minhaGrid
(1500) Se sim, como eu poderia determinar a posição de qualquerTextBox
então eu posso rolar para ele?
Se houver exemplos simples, sinta-se à vontade para entrar em contato com eles. Não tenho certeza se o conteúdo dentro doScrollViewer
importa quando chamar esse método, mas no caso que eu queria mostrar exatamente como eu estou usando.
Muito obrigado antecipadamente!