Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
A ScrollBar umožňuje zobrazit obsah mimo aktuální oblast zobrazení posunutím Thumb , aby byl obsah viditelný. Obsah v uživatelském rozhraní je často větší než oblast zobrazení obrazovky počítače a ScrollBar poskytuje základní mechanismus posouvání používaný v aplikacích WINDOWS Presentation Foundation (WPF).
Existují dva předdefinované prvky, které umožňují posouvání v aplikacích WPF: ScrollBar a ScrollViewer. Ovládací ScrollViewer prvek zapouzdřuje vodorovné a svislé ScrollBar prvky a kontejner obsahu (například Panel prvek) k zobrazení dalších viditelných prvků v oblasti umožňující posouvání. Je nutné vytvořit vlastní objekt pro použití elementu ScrollBar pro posouvání obsahu. Prvek ScrollViewer však můžete použít samostatně, protože jde o složený ovládací prvek, který zapouzdřuje funkcionalitu ScrollBar.
| Title | Description |
|---|---|
| Přizpůsobení velikosti palce na posuvníku | Zjistěte, jak přizpůsobit velikost elementu palce v ovládacím prvku ScrollBar. |
Klíčové koncepty
Fyzické a logické posouvání
Fyzické posouvání se používá k posouvání obsahu předem určeným fyzickým přírůstkem, obvykle hodnotou deklarovanou v pixelech. Logické posouvání slouží k posouvání na další položku v logickém stromu. Fyzické posouvání je výchozím chováním posouvání většiny Panel prvků. WPF podporuje oba typy posouvání.
Rozhraní IScrollInfo představuje hlavní oblast posouvání v základním nebo odvozeném ovládacím prvku ScrollViewer. Rozhraní definuje vlastnosti a metody posouvání, jež mohou být implementovány prvky Panel, které vyžadují posouvání pomocí logické jednotky, nikoli na základě fyzického přírůstku. Přetypování instance IScrollInfo na odvozenou instanci Panel a následné použití jejích metod posouvání je užitečný způsob, jak se posunout k další logické jednotce v podřízené kolekci, místo posouvání po pixelech.
StackPanel a VirtualizingStackPanel obojí implementují IScrollInfo a nativně podporují logické posouvání. U ovládacích prvků rozložení, které nativně podporují logické posouvání, můžete stále dosáhnout fyzického posouvání tak, že zabalíte prvek hostitele Panel do ScrollViewer a nastavíte CanContentScroll vlastnost na false.
Examples
Použití IScrollInfo pro posouvání obsahu
Následující příklad kódu ukazuje, jak přetypovat instanci IScrollInfo na StackPanel a použít metody posouvání obsahu (LineUp a LineDown) definované rozhraním.
private void spLineUp(object sender, RoutedEventArgs e)
{
((IScrollInfo)sp1).LineUp();
}
private void spLineDown(object sender, RoutedEventArgs e)
{
((IScrollInfo)sp1).LineDown();
}
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
Vytvoření scrollVieweru s elementy ScrollBar
Následující příklad vytvoří ScrollViewer v okně, které obsahuje nějaký text a obdélník. ScrollBar prvky se zobrazí pouze v případě, že jsou nezbytné. Když změníte velikost okna, ScrollBar prvky se zobrazí a zmizí kvůli aktualizovaným ComputedHorizontalScrollBarVisibility hodnotám a ComputedVerticalScrollBarVisibility vlastnostem.
// Create the application's main window
mainWindow = gcnew System::Windows::Window();
mainWindow->Title = "ScrollViewer Sample";
// Define a ScrollViewer
myScrollViewer = gcnew ScrollViewer();
myScrollViewer->HorizontalScrollBarVisibility = ScrollBarVisibility::Auto;
// Add Layout control
myStackPanel = gcnew StackPanel();
myStackPanel->HorizontalAlignment = HorizontalAlignment::Left;
myStackPanel->VerticalAlignment = VerticalAlignment::Top;
TextBlock^ myTextBlock = gcnew TextBlock();
myTextBlock->TextWrapping = TextWrapping::Wrap;
myTextBlock->Margin = System::Windows::Thickness(0, 0, 0, 20);
myTextBlock->Text = "Scrolling is enabled when it is necessary. Resize the Window, making it larger and smaller.";
Rectangle^ myRectangle = gcnew Rectangle();
myRectangle->Fill = Brushes::Red;
myRectangle->Width = 500;
myRectangle->Height = 500;
// Add child elements to the parent StackPanel
myStackPanel->Children->Add(myTextBlock);
myStackPanel->Children->Add(myRectangle);
// Add the StackPanel as the lone child of the ScrollViewer
myScrollViewer->Content = myStackPanel;
// Add the ScrollViewer as the Content of the parent Window object
mainWindow->Content = myScrollViewer;
mainWindow->Show();
// Create the application's main window
mainWindow = new Window ();
mainWindow.Title = "ScrollViewer Sample";
// Define a ScrollViewer
myScrollViewer = new ScrollViewer();
myScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
// Add Layout control
myStackPanel = new StackPanel();
myStackPanel.HorizontalAlignment = HorizontalAlignment.Left;
myStackPanel.VerticalAlignment = VerticalAlignment.Top;
TextBlock myTextBlock = new TextBlock();
myTextBlock.TextWrapping = TextWrapping.Wrap;
myTextBlock.Margin = new Thickness(0, 0, 0, 20);
myTextBlock.Text = "Scrolling is enabled when it is necessary. Resize the Window, making it larger and smaller.";
Rectangle myRectangle = new Rectangle();
myRectangle.Fill = Brushes.Red;
myRectangle.Width = 500;
myRectangle.Height = 500;
// Add child elements to the parent StackPanel
myStackPanel.Children.Add(myTextBlock);
myStackPanel.Children.Add(myRectangle);
// Add the StackPanel as the lone child of the ScrollViewer
myScrollViewer.Content = myStackPanel;
// Add the ScrollViewer as the Content of the parent Window object
mainWindow.Content = myScrollViewer;
mainWindow.Show ();
'Define a ScrollViewer.
Dim myScrollViewer As New ScrollViewer
myScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto
'Add Layout control.
Dim myStackPanel As New StackPanel
myStackPanel.HorizontalAlignment = System.Windows.HorizontalAlignment.Left
myStackPanel.VerticalAlignment = System.Windows.VerticalAlignment.Top
Dim myTextBlock As New TextBlock
myTextBlock.TextWrapping = TextWrapping.Wrap
myTextBlock.Margin = New Thickness(0, 0, 0, 20)
myTextBlock.Text = "Scrolling is enabled when it is necessary. Resize the Window, making it larger and smaller."
Dim myRectangle As New Rectangle
myRectangle.Fill = Brushes.Red
myRectangle.Width = 500
myRectangle.Height = 500
'Add child elements to the parent StackPanel.
myStackPanel.Children.Add(myTextBlock)
myStackPanel.Children.Add(myRectangle)
'Add the StackPanel as the lone child of the ScrollViewer
myScrollViewer.Content = myStackPanel
'Add the ScrollViewer as the Content of the parent Window object
Me.Content = myScrollViewer
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowTitle="ScrollViewer Sample">
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBlock TextWrapping="Wrap" Margin="0,0,0,20">Scrolling is enabled when it is necessary.
Resize the window, making it larger and smaller.</TextBlock>
<Rectangle Fill="Red" Width="500" Height="500"></Rectangle>
</StackPanel>
</ScrollViewer>
</Page>
Styly a šablony
Tato část popisuje styly a šablony ScrollBar ovládacího prvku. Výchozí nastavení ControlTemplate můžete upravit tak, aby ovládací prvek získal jedinečný vzhled. Další informace najdete v tématu Co jsou styly a šablony? a Jak vytvořit šablonu pro ovládací prvek.
Vlastnost obsahu
Tento ovládací prvek nedefinuje vlastnost obsahu.
Součástky
Následující tabulka uvádí pojmenované části ScrollBar ovládacího prvku.
| Část | Typ | Description |
|---|---|---|
| PART_Track | Track | Kontejner pro prvek, který označuje pozici ScrollBar. |
Vizuální stavy
Následující tabulka uvádí vizuální stavy ScrollBar ovládacího prvku.
| Název VisualState | Název skupiny VisualStateGroup | Description |
|---|---|---|
| Disabled | CommonStates | Ovládací prvek je zakázaný. |
| Mouseover | CommonStates | Ukazatel myši se umístí nad ovládací prvek. |
| Normální | CommonStates | Výchozí stav. |
| Focused | FocusStates | Ovládací prvek má fokus klávesnice. |
| Nezaměřený | FocusStates | Ovládací prvek nemá fokus klávesnice. |
| Neplatný fokus | StavyOvěření | Připojená Validation.HasError vlastnost je true a ovládací prvek má fokus. |
| NeplatnýBezZaostření | StavyOvěření | Připojená Validation.HasError vlastnost je true a ovládací prvek nemá fokus. |
| Valid | StavyOvěření | Ovládací prvek používá Validation třídu a připojená Validation.HasError vlastnost je false. |
Viz také
.NET Desktop feedback