<Window x:Class="ScrollViewer_Sample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ScrollViewer_Sample"
        mc:Ignorable="d"
Title="ScrollViewer" Height="400" Width="500">
    <Window.Background>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="Black" Offset="0"/>
            <GradientStop Color="White" Offset="1"/>
        </LinearGradientBrush>
    </Window.Background>

    <DockPanel>
        <StackPanel DockPanel.Dock="Left" Orientation="Vertical" Width="120" ButtonBase.Click="ButtonHandler" >
            <Button Name="btnLineUp" Margin="5,5,5,5" Content="LineUp()" />
            <Button Name="btnLineDown" Margin="5,5,5,5" Content="LineDown()" />
            <Button Name="btnLineRight" Margin="5,5,5,5" Content="LineRight()" />
            <Button Name="btnLineLeft" Margin="5,5,5,5" Content="LineLeft()" />
            <Button Name="btnPageUp" Margin="5,5,5,5" Content="PageUp()" />
            <Button Name="btnPageDown" Margin="5,5,5,5" Content="PageDown()" />
            <Button Name="btnPageRight" Margin="5,5,5,5" Content="PageRight()" />
            <Button Name="btnPageLeft" Margin="5,5,5,5" Content="PageLeft()" />
            <Button Name="btnTop" Margin="5,5,5,5" Content="ScrollToTop()" />
            <Button Name="btnBottom" Margin="5,5,5,5" Content="ScrollToBottom()" />
        </StackPanel>
        <ScrollViewer Name="scrViewer" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" Margin="5">
            <TextBlock Padding="10" TextWrapping="Wrap" Width="500" Background="White">        
                Die beiden wichtigsten Begriffe, die im Mittelpunkt der objektorientierten Betrachtungen stehen, sind die der Klasse 
				und des Objekts. Was ist darunter zu verstehen? 
				Stellen Sie sich ein Architekturbüro vor, das ein Einfamilienwohnhaus plant und den Bauplan als Ergebnis aller 
				anfänglichen Forderungen und der daraus resultierenden Berechnungen zeichnet. Der Bauplan enthält die Abmessungen 
				des Grundrisses der einzelnen Etagen, die Angaben, wo Fenster und Türen eingebaut werden, die Mauerdicken, die Lage 
				der Elektroverkabelung, der Heizungsrohre usw. Der fertige Bauplan dient anschließend als Vorlage für die Bauausführung. 
				Vielleicht hat der Architekt sogar die Möglichkeit, den Bauplan mehrfach zu benutzen, um darauf basierend ein zweites 
				oder gar ein drittes Haus zu erstellen. Die Häuser müssen nicht identisch sein, sie können sich in Einzelheiten 
				unterscheiden: Die Außenfassade des ersten Hauses mag geputzt sein, die des zweiten geklinkert, ein Haus wird mit 
				einer Ölheizung ausgestattet, das andere nutzt Fernwärme. 
			<LineBreak /><LineBreak />
        Der Bauplan dient also nur als Vorlage. Er ist also im weitestgehenden Sinn eine Schablone, die zur Realisierung 
				konkreter Häuser dient. Projiziert auf die objektorientierte Welt, ist der Bauplan als eine Klasse zu verstehen 
				und ein fertig gebautes Haus als ein Objekt. Liegt ein Bauplan (= Klasse) vor, kann er dazu dienen, beliebig viele 
				Häuser (= Objekte) zu erstellen, die sich durchaus unterscheiden dürfen.
			<LineBreak /><LineBreak />
				In der objektorientierten Programmierung spricht man von einem Objekt oder auch von einem konkreten Objekt, wenn 
				aus der Klassendefinition heraus etwas „Gegenständliches“ erzeugt wird. Ein weiterer, häufig benutzter Begriff ist 
				der der Klasseninstanz oder einfach nur Instanz. Sie können diese Begriffe synonym nebeneinander verwenden, sie 
				besagen dasselbe.
			<LineBreak /><LineBreak />
				Ein Objekt wird durch bestimmte, charakteristische Merkmale beschrieben, die in der Klassendefinition festgelegt 
				werden müssen. Diese werden als Eigenschaften bezeichnet. Beispielsweise könnte ein Objekt vom Typ Person im Rahmen 
				der anwendungsspezifischen Forderungen durch den Namen der Person, deren Augenfarbe, Schuhgröße und das Geschlecht 
				ausreichend beschrieben werden.
            </TextBlock>
        </ScrollViewer>
    </DockPanel>
</Window>
