Como: Raise the ScrollChanged Event
Exemplo
Este exemplo mostra como lançar o evento ScrollChanged de um ScrollViewer.
Um elemento FlowDocumentcom quatro Paragraphs, como definido em Extensible Application Markup Language (XAML). O FlowDocument reside dentro de um ScrollViewer pai, o que garante que a barra de rolagem vertical estará visível. Quando o evento ScrollChanged ocorre, um método customizado definido no C# é lançado, e o texto escrito em um TextBlock, indicando que o evento ocorreu.
O exemplo de código a seguir é abreviado. For the complete sample, see Exemplo de evento ScrollChanged.
<ScrollViewer Name="sv1" CanContentScroll="False" ScrollChanged="sChanged">
<FlowDocument FontFamily="Arial" PageWidth="400">
<Paragraph>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation
ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation
ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation
ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure.
</Paragraph>
...
<Paragraph>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation
ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation
ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation
ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure.
</Paragraph>
</FlowDocument>
</ScrollViewer>
O evento ScrollChanged é tratado em um arquivo code-behind C#. Quando o evento ScrollChanged ocorre, uma MessageBox exibe uma mensagem indicativa para o usuário.
Private Sub sChanged(ByVal sender As Object, ByVal args As ScrollChangedEventArgs)
If (sv1.CanContentScroll = True) Then
tBlock1.Foreground = System.Windows.Media.Brushes.Red
tBlock1.Text = "ScrollChangedEvent just Occurred"
tBlock3.Text = "ExtentWidth is now " + args.ExtentWidth.ToString()
tBlock4.Text = "ExtentHeightChange was " + args.ExtentHeightChange.ToString()
tBlock5.Text = "ExtentWidthChange was " + args.ExtentWidthChange.ToString()
tBlock6.Text = "HorizontalOffset is now " + args.HorizontalOffset.ToString()
tBlock7.Text = "VerticalOffset is now " + args.VerticalOffset.ToString()
tBlock8.Text = "HorizontalChange was " + args.HorizontalChange.ToString()
tBlock9.Text = "VerticalChange was " + args.VerticalChange.ToString()
tBlock10.Text = "ViewportHeight is now " + args.ViewportHeight.ToString()
tBlock11.Text = "ViewportWidth is now " + args.ViewportWidth.ToString()
tBlock12.Text = "ViewportHeightChange was " + args.ViewportHeightChange.ToString()
tBlock13.Text = "ViewportWidthChange was " + args.ViewportWidthChange.ToString()
Else
tBlock1.Text = ""
End If
private void sChanged(object sender, ScrollChangedEventArgs e)
{
if (sv1.CanContentScroll == true)
{
tBlock1.Foreground = System.Windows.Media.Brushes.Red;
tBlock1.Text = "ScrollChangedEvent just Occurred";
tBlock2.Text = "ExtentHeight is now " + e.ExtentHeight.ToString();
tBlock3.Text = "ExtentWidth is now " + e.ExtentWidth.ToString();
tBlock4.Text = "ExtentHeightChange was " + e.ExtentHeightChange.ToString();
tBlock5.Text = "ExtentWidthChange was " + e.ExtentWidthChange.ToString();
tBlock6.Text = "HorizontalOffset is now " + e.HorizontalOffset.ToString();
tBlock7.Text = "VerticalOffset is now " + e.VerticalOffset.ToString();
tBlock8.Text = "HorizontalChange was " + e.HorizontalChange.ToString();
tBlock9.Text = "VerticalChange was " + e.VerticalChange.ToString();
tBlock10.Text = "ViewportHeight is now " + e.ViewportHeight.ToString();
tBlock11.Text = "ViewportWidth is now " + e.ViewportWidth.ToString();
tBlock12.Text = "ViewportHeightChange was " + e.ViewportHeightChange.ToString();
tBlock13.Text = "ViewportWidthChange was " + e.ViewportWidthChange.ToString();
}
else
{
tBlock1.Text = "";
}