Procedura: generare l'evento ScrollChanged
Aggiornamento: novembre 2007
Esempio
In questo esempio viene illustrato come generare l'evento ScrollChanged di ScrollViewer.
Elemento FlowDocument con quattro Paragrafi come definito in Extensible Application Markup Language (XAML). FlowDocument si trova all'interno di un elemento ScrollViewer padre che garantisce la visualizzazione di una barra di scorrimento verticale. Quando si verifica l'evento ScrollChanged, viene generato un metodo personalizzato definito in C# e in TextBlock viene scritto il testo che indica che si è verificato l'evento.
Il codice di esempio riportato di seguito è abbreviato. Per l'esempio completo, vedere Esempio di 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>
L'evento ScrollChanged viene gestito in un file code-behind C#. Quando si verifica l'evento ScrollChanged, in MessageBox viene visualizzato un messaggio che informa l'utente.
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 = "";
}