Gewusst wie: Durchführen eines Bildlaufs von Inhalten mithilfe der IScrollInfo-Schnittstelle
Dieses Beispiel veranschaulicht, wie mithilfe der IScrollInfo-Schnittstelle ein Bildlauf durch Inhalte durchgeführt wird.
Beispiel
Im folgenden Beispiel werden die Features der IScrollInfo-Schnittstelle veranschaulicht. Im Beispiel wird ein StackPanel-Element in Extensible Application Markup Language (XAML) erstellt, das in einem übergeordneten ScrollViewer-Element geschachtelt ist. In den untergeordneten Elementen von StackPanel kann ein logischer Bildlauf mithilfe der Methoden durchgeführt werden, die in der IScrollInfo-Schnittstelle definiert sind. Im Code können die untergeordneten Elemente in eine Instanz von StackPanel (sp1) umgewandelt werden.
<Border BorderBrush="Black" Background="White" BorderThickness="2" Width="500" Height="500">
<ScrollViewer Name="sv1" CanContentScroll="True" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible">
<StackPanel Name="sp1">
<Button>Button 1</Button>
<Button>Button 2</Button>
<Button>Button 3</Button>
<Button>Button 4</Button>
<Button>Button 5</Button>
<Rectangle Width="700" Height="500" Fill="Purple"/>
<TextBlock>Rectangle 1</TextBlock>
<Rectangle Width="700" Height="500" Fill="Red"/>
<TextBlock>Rectangle 2</TextBlock>
<Rectangle Width="700" Height="500" Fill="Green"/>
<TextBlock>Rectangle 3</TextBlock>
</StackPanel>
</ScrollViewer>
</Border>
Jede Button der Datei XAML löst eine zugeordnete benutzerdefinierte Methode aus, durch die das Bildlaufverhalten in StackPanel gesteuert wird. Das folgende Beispiel veranschaulicht die Verwendung der Methoden LineUp und LineDown. Außerdem wird die übliche Verwendung aller Positionierungsmethoden dargestellt, die in der IScrollInfo-Klasse definiert werden.
Private Sub spLineUp(ByVal sender As Object, ByVal args As RoutedEventArgs)
CType(sp1, IScrollInfo).LineUp()
End Sub
Private Sub spLineDown(ByVal sender As Object, ByVal args As RoutedEventArgs)
CType(sp1, IScrollInfo).LineDown()
End Sub
private void spLineUp(object sender, RoutedEventArgs e)
{
((IScrollInfo)sp1).LineUp();
}
private void spLineDown(object sender, RoutedEventArgs e)
{
((IScrollInfo)sp1).LineDown();
}