Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

ScrollViewer Class

Represents a scrollable area that can contain other visible elements.

Namespace: System.Windows.Controls
Assembly: PresentationFramework (in presentationframework.dll)
XML Namespace:  http://schemas.microsoft.com/winfx/2006/xaml/presentation

[LocalizabilityAttribute(LocalizationCategory.Ignore)] 
[TemplatePartAttribute(Name="PART_HorizontalScrollBar", Type=typeof(ScrollBar))] 
[TemplatePartAttribute(Name="PART_VerticalScrollBar", Type=typeof(ScrollBar))] 
[TemplatePartAttribute(Name="PART_ScrollContentPresenter", Type=typeof(ScrollContentPresenter))] 
public class ScrollViewer : ContentControl
/** @attribute LocalizabilityAttribute(LocalizationCategory.Ignore) */ 
/** @attribute TemplatePartAttribute(Name="PART_HorizontalScrollBar", Type=System.Windows.Controls.Primitives.ScrollBar) */ 
/** @attribute TemplatePartAttribute(Name="PART_VerticalScrollBar", Type=System.Windows.Controls.Primitives.ScrollBar) */ 
/** @attribute TemplatePartAttribute(Name="PART_ScrollContentPresenter", Type=System.Windows.Controls.ScrollContentPresenter) */ 
public class ScrollViewer extends ContentControl
LocalizabilityAttribute(LocalizationCategory.Ignore) 
TemplatePartAttribute(Name="PART_HorizontalScrollBar", Type=System.Windows.Controls.Primitives.ScrollBar) 
TemplatePartAttribute(Name="PART_VerticalScrollBar", Type=System.Windows.Controls.Primitives.ScrollBar) 
TemplatePartAttribute(Name="PART_ScrollContentPresenter", Type=System.Windows.Controls.ScrollContentPresenter) 
public class ScrollViewer extends ContentControl
<ScrollViewer>
  Content
</ScrollViewer>

The ScrollViewer element encapsulates a content element and up to two ScrollBar controls.

Physical scrolling is used to scroll content by a predetermined physical increment, typically by a value that is declared in pixels. Logical scrolling is used to scroll to the next item in the logical tree. If you require physical scrolling instead of logical scrolling, wrap the host Panel element in a ScrollViewer and set its CanContentScroll property to false. Physical scrolling is the default scroll behavior for most Panel elements.

Because the scroll bars for a ScrollViewer element are defined in the default style of the element, scroll bars will no longer appear if you apply a custom style to a ScrollViewer. Scroll bars must be defined in the custom style for them to appear. For an example of how to implement scroll bars in a custom style, see Style the ScrollViewer Element.

This example shows how to create and use a ScrollViewer element in Extensible Application Markup Language (XAML).

The following example creates a window that contains some text and a rectangle. The scroll bars appear only when they are needed. When you resize the window, the scroll bars appear and disappear.

For the complete sample, see Scroll Viewer Sample.


// 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 Border
myScrollViewer.Content = myStackPanel;

// Add the Border as the Content of the Parent Window Object
mainWindow.Content = myScrollViewer;
mainWindow.Show ();


<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>

More Code

How to: Use the Content-Scrolling Methods of ScrollViewer

This example shows how to use the scrolling methods of the ScrollViewer element. These methods provide incremental scrolling of content, either by line or by page, in a ScrollViewer.

How to: Raise the ScrollChanged Event

This example shows how to raise the ScrollChanged event of a ScrollViewer.

System.Object
   System.Windows.Threading.DispatcherObject
     System.Windows.DependencyObject
       System.Windows.Media.Visual
         System.Windows.UIElement
           System.Windows.FrameworkElement
             System.Windows.Controls.Control
               System.Windows.Controls.ContentControl
                System.Windows.Controls.ScrollViewer
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.