<UserControl
   x:Class="OVCS.ClientWpf.Controls.ChatBox.ChatBox"
   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:local="clr-namespace:OVCS.ClientWpf.Controls.ChatBox"
   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
   d:DesignHeight="450"
   d:DesignWidth="800"
   mc:Ignorable="d">
    <UserControl.Resources>
        <Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}">
            <Setter Property="OverridesDefaultStyle" Value="true" />
            <Setter Property="IsTabStop" Value="false" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Thumb}">
                        <Grid>
                            <Border Background="#646465" CornerRadius="3" />
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="HorizontalScrollBarPageButton" TargetType="{x:Type RepeatButton}">
            <Setter Property="OverridesDefaultStyle" Value="true" />
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="Focusable" Value="false" />
            <Setter Property="IsTabStop" Value="false" />
            <Setter Property="Opacity" Value="0.2" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RepeatButton}">
                        <Rectangle
                           Width="{TemplateBinding Width}"
                           Height="{TemplateBinding Height}"
                           Fill="{TemplateBinding Background}" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="VerticalScrollBarPageButton" TargetType="{x:Type RepeatButton}">
            <Setter Property="OverridesDefaultStyle" Value="true" />
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="Focusable" Value="false" />
            <Setter Property="IsTabStop" Value="false" />
            <Setter Property="Opacity" Value="0.2" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RepeatButton}">
                        <Rectangle
                           Width="{TemplateBinding Width}"
                           Height="{TemplateBinding Height}"
                           Fill="{TemplateBinding Background}" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <Style x:Key="VerticalScrollBarPageButton2" TargetType="{x:Type RepeatButton}">
            <Setter Property="OverridesDefaultStyle" Value="true" />
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="Focusable" Value="false" />
            <Setter Property="IsTabStop" Value="false" />
            <Setter Property="Opacity" Value="0" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RepeatButton}">
                        <Rectangle
                           Width="0"
                           Height="0"
                           Fill="#90000000" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="for_scrollbar" TargetType="{x:Type ScrollBar}">
            <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" />
            <Setter Property="Stylus.IsFlicksEnabled" Value="false" />
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="Margin" Value="0,1,1,6" />
            <Setter Property="Width" Value="10" />
            <Setter Property="MinWidth" Value="5" />
            <Setter Property="Opacity" Value="0.2" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ScrollBar}">
                        <Grid x:Name="Bg" SnapsToDevicePixels="true">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="auto" />
                                <RowDefinition Height="*" />
                                <RowDefinition Height="auto" />
                            </Grid.RowDefinitions>
                            <RepeatButton
                               Grid.Row="0"
                               Command="{x:Static ScrollBar.PageUpCommand}"
                               Style="{StaticResource VerticalScrollBarPageButton2}" />
                            <Track
                               x:Name="PART_Track"
                               Grid.Row="1"
                               IsDirectionReversed="true"
                               IsEnabled="{TemplateBinding IsMouseOver}">
                                <Track.DecreaseRepeatButton>
                                    <RepeatButton Command="{x:Static ScrollBar.PageUpCommand}" Style="{StaticResource VerticalScrollBarPageButton}" />
                                </Track.DecreaseRepeatButton>
                                <Track.IncreaseRepeatButton>
                                    <RepeatButton Command="{x:Static ScrollBar.PageDownCommand}" Style="{StaticResource VerticalScrollBarPageButton}" />
                                </Track.IncreaseRepeatButton>
                                <Track.Thumb>
                                    <Thumb Style="{StaticResource ScrollBarThumb}" />
                                </Track.Thumb>
                            </Track>
                            <RepeatButton
                               Grid.Row="2"
                               Command="{x:Static ScrollBar.PageDownCommand}"
                               Style="{StaticResource VerticalScrollBarPageButton2}" />
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="Orientation" Value="Horizontal">
                    <Setter Property="Background" Value="Transparent" />
                    <Setter Property="Margin" Value="1,0,6,1" />
                    <Setter Property="Height" Value="5" />
                    <Setter Property="MinHeight" Value="5" />
                    <Setter Property="Width" Value="Auto" />
                    <Setter Property="Opacity" Value="0.2" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ScrollBar}">
                                <Grid x:Name="Bg" SnapsToDevicePixels="true">
                                    <Track x:Name="PART_Track" IsEnabled="{TemplateBinding IsMouseOver}">
                                        <Track.DecreaseRepeatButton>
                                            <RepeatButton Command="{x:Static ScrollBar.PageLeftCommand}" Style="{StaticResource HorizontalScrollBarPageButton}" />
                                        </Track.DecreaseRepeatButton>
                                        <Track.IncreaseRepeatButton>
                                            <RepeatButton Command="{x:Static ScrollBar.PageRightCommand}" Style="{StaticResource HorizontalScrollBarPageButton}" />
                                        </Track.IncreaseRepeatButton>
                                        <Track.Thumb>
                                            <Thumb Style="{StaticResource ScrollBarThumb}" />
                                        </Track.Thumb>
                                    </Track>
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
        <Style x:Key="for_scrollviewer" TargetType="{x:Type ScrollViewer}">
            <Setter Property="BorderBrush" Value="LightGray" />
            <Setter Property="BorderThickness" Value="0" />
            <Setter Property="VirtualizingStackPanel.VirtualizationMode" Value="Recycling" />
            <Setter Property="VirtualizingStackPanel.IsVirtualizing" Value="True" />
            <Setter Property="CanContentScroll" Value="True" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ScrollViewer}">
                        <Border
                           BorderBrush="{TemplateBinding BorderBrush}"
                           BorderThickness="{TemplateBinding BorderThickness}"
                           SnapsToDevicePixels="True">
                            <Grid Background="{TemplateBinding Background}">
                                <ScrollContentPresenter
                                   Margin="{TemplateBinding Padding}"
                                   ContentTemplate="{TemplateBinding ContentTemplate}"
                                   Cursor="{TemplateBinding Cursor}" />
                                <ScrollBar
                                   x:Name="PART_VerticalScrollBar"
                                   Value="{TemplateBinding VerticalOffset}"
                                   HorizontalAlignment="Right"
                                   Maximum="{TemplateBinding ScrollableHeight}"
                                   Orientation="Vertical"
                                   Style="{StaticResource for_scrollbar}"
                                   ViewportSize="{TemplateBinding ViewportHeight}"
                                   Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />
                                <ScrollBar
                                   x:Name="PART_HorizontalScrollBar"
                                   Value="{TemplateBinding HorizontalOffset}"
                                   VerticalAlignment="Bottom"
                                   Maximum="{TemplateBinding ScrollableWidth}"
                                   Orientation="Horizontal"
                                   Style="{StaticResource for_scrollbar}"
                                   ViewportSize="{TemplateBinding ViewportWidth}"
                                   Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <EventTrigger RoutedEvent="ScrollChanged">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation
                                           Storyboard.TargetName="PART_VerticalScrollBar"
                                           Storyboard.TargetProperty="Opacity"
                                           To="0.8"
                                           Duration="0:0:1" />
                                        <DoubleAnimation
                                           BeginTime="0:0:1"
                                           Storyboard.TargetName="PART_VerticalScrollBar"
                                           Storyboard.TargetProperty="Opacity"
                                           To="0.2"
                                           Duration="0:0:1" />
                                        <DoubleAnimation
                                           Storyboard.TargetName="PART_HorizontalScrollBar"
                                           Storyboard.TargetProperty="Opacity"
                                           To="0.8"
                                           Duration="0:0:1" />
                                        <DoubleAnimation
                                           BeginTime="0:0:1"
                                           Storyboard.TargetName="PART_HorizontalScrollBar"
                                           Storyboard.TargetProperty="Opacity"
                                           To="0.2"
                                           Duration="0:0:1" />
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                            <EventTrigger RoutedEvent="MouseEnter" SourceName="PART_VerticalScrollBar">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation
                                           Storyboard.TargetName="PART_VerticalScrollBar"
                                           Storyboard.TargetProperty="Opacity"
                                           To="0.8"
                                           Duration="0:0:0.7" />
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                            <EventTrigger RoutedEvent="MouseLeave" SourceName="PART_VerticalScrollBar">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation
                                           Storyboard.TargetName="PART_VerticalScrollBar"
                                           Storyboard.TargetProperty="Opacity"
                                           To="0.2"
                                           Duration="0:0:0.7" />
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                            <EventTrigger RoutedEvent="MouseEnter" SourceName="PART_HorizontalScrollBar">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation
                                           Storyboard.TargetName="PART_HorizontalScrollBar"
                                           Storyboard.TargetProperty="Opacity"
                                           To="0.8"
                                           Duration="0:0:0.7" />
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                            <EventTrigger RoutedEvent="MouseLeave" SourceName="PART_HorizontalScrollBar">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation
                                           Storyboard.TargetName="PART_HorizontalScrollBar"
                                           Storyboard.TargetProperty="Opacity"
                                           To="0.2"
                                           Duration="0:0:0.7" />
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>

    <ScrollViewer
       x:Name="scrollViewer"
       Background="#F5F5F5"
       HorizontalScrollBarVisibility="Hidden"
       PreviewMouseWheel="ScrollViewer_PreviewMouseWheel"
       ScrollChanged="ScrollViewer_ScrollChanged"
       SizeChanged="ScrollViewer_SizeChanged"
       Style="{StaticResource for_scrollviewer}"
       VerticalScrollBarVisibility="Auto">
        <local:InnerChatBox x:Name="innerChatBox" VerticalAlignment="Top" />
    </ScrollViewer>

</UserControl>
