עיצוב מודרני עבור ScrollBar ב- Wpf
-
מצו"ב הקוד (מתאים במיוחד עבור DarkTheme)

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib"> <system:Double x:Key="ScrollBarWidth">16</system:Double> <system:Double x:Key="ScrollBarArrowHeight">4</system:Double> <system:Double x:Key="ScrollBarArrowWidth">8</system:Double> <SolidColorBrush x:Key="ScrollBarButtonBackgroundBrush" Color="#888888" Opacity="0.4" /> <SolidColorBrush x:Key="ScrollBarButtonHighlightBackgroundBrush" Color="#B0B0B0" Opacity="0.4" /> <Style TargetType="{x:Type ScrollBar}"> <Setter Property="Foreground" Value="#FF999999"/> <Style.Triggers> <Trigger Property="Orientation" Value="Vertical"> <Setter Property="Width" Value="{StaticResource ScrollBarWidth}"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ScrollBar}"> <Border BorderThickness="1"> <Border.BorderBrush> <SolidColorBrush Color="#888888" Opacity="0.6"/> </Border.BorderBrush> <Border.Background> <SolidColorBrush Color="#888888" Opacity="0.1"/> </Border.Background> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Button Grid.Row="0" Command="ScrollBar.LineUpCommand" Height="{StaticResource ScrollBarWidth}"> <Button.Template> <ControlTemplate TargetType="Button"> <Grid> <Rectangle x:Name="ButtonRectangle" Fill="Transparent"/> <Path x:Name="ButtonPath" HorizontalAlignment="Center" VerticalAlignment="Center" Data="M 0 10 L 10 10 L 5 0 Z" Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ScrollBar}}" Stretch="Fill" Height="{StaticResource ScrollBarArrowHeight}" Width="{StaticResource ScrollBarArrowWidth}" /> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="ButtonRectangle" Property="Fill" Value="{StaticResource ScrollBarButtonHighlightBackgroundBrush}" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Button.Template> </Button> <Track Name="PART_Track" IsDirectionReversed="True" VerticalAlignment="Stretch" Grid.Row="1"> <Track.DecreaseRepeatButton> <RepeatButton Command="ScrollBar.PageUpCommand" Background="Transparent"> <RepeatButton.Template> <ControlTemplate TargetType="RepeatButton"> <Rectangle Fill="{TemplateBinding Background}" Height="{TemplateBinding ActualHeight}" Width="{TemplateBinding ActualWidth}" /> </ControlTemplate> </RepeatButton.Template> </RepeatButton> </Track.DecreaseRepeatButton> <Track.Thumb> <Thumb> <Thumb.Template> <ControlTemplate TargetType="Thumb"> <Rectangle x:Name="ThumbRectangle" Fill="{StaticResource ScrollBarButtonBackgroundBrush}" Margin="1,0,1,0"/> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="ThumbRectangle" Property="Fill" Value="{StaticResource ScrollBarButtonHighlightBackgroundBrush}" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Thumb.Template> </Thumb> </Track.Thumb> <Track.IncreaseRepeatButton> <RepeatButton Command="ScrollBar.PageDownCommand" Background="Transparent"> <RepeatButton.Template> <ControlTemplate TargetType="RepeatButton"> <Rectangle Fill="{TemplateBinding Background}" Height="{TemplateBinding ActualHeight}" Width="{TemplateBinding ActualWidth}" /> </ControlTemplate> </RepeatButton.Template> </RepeatButton> </Track.IncreaseRepeatButton> </Track> <Button Grid.Row="2" Command="ScrollBar.LineDownCommand" Height="{StaticResource ScrollBarWidth}"> <Button.Template> <ControlTemplate TargetType="Button"> <Grid> <Rectangle x:Name="ButtonRectangle" Fill="Transparent"/> <Path HorizontalAlignment="Center" VerticalAlignment="Center" Data="M 0 0 L 10 0 L 5 10 Z" Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ScrollBar}}" Stretch="Fill" Height="{StaticResource ScrollBarArrowHeight}" Width="{StaticResource ScrollBarArrowWidth}" /> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="ButtonRectangle" Property="Fill" Value="{StaticResource ScrollBarButtonHighlightBackgroundBrush}" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Button.Template> </Button> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Trigger> <Trigger Property="Orientation" Value="Horizontal"> <Setter Property="Foreground" Value="#FF999999"/> <Setter Property="Height" Value="{StaticResource ScrollBarWidth}"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ScrollBar}"> <Border BorderThickness="1"> <Border.BorderBrush> <SolidColorBrush Color="#888888" Opacity="0.6"/> </Border.BorderBrush> <Border.Background> <SolidColorBrush Color="#888888" Opacity="0.1"/> </Border.Background> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <Button Grid.Column="0" Command="ScrollBar.LineLeftCommand" Width="{StaticResource ScrollBarWidth}"> <Button.Template> <ControlTemplate TargetType="Button"> <Grid> <Rectangle x:Name="ButtonRectangle" Fill="Transparent"/> <Path HorizontalAlignment="Center" VerticalAlignment="Center" Data="M 0 5 L 10 0 L 10 10 Z" Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ScrollBar}}" Stretch="Fill" Height="{StaticResource ScrollBarArrowWidth}" Width="{StaticResource ScrollBarArrowHeight}" /> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="ButtonRectangle" Property="Fill" Value="{StaticResource ScrollBarButtonHighlightBackgroundBrush}" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Button.Template> </Button> <Track Name="PART_Track" IsDirectionReversed="False" HorizontalAlignment="Stretch" Grid.Column="1"> <Track.DecreaseRepeatButton> <RepeatButton Command="ScrollBar.PageLeftCommand" Background="Transparent"> <RepeatButton.Template> <ControlTemplate TargetType="RepeatButton"> <Rectangle Fill="{TemplateBinding Background}" Height="{TemplateBinding ActualHeight}" Width="{TemplateBinding ActualWidth}" /> </ControlTemplate> </RepeatButton.Template> </RepeatButton> </Track.DecreaseRepeatButton> <Track.Thumb> <Thumb> <Thumb.Template> <ControlTemplate TargetType="Thumb"> <Rectangle x:Name="ThumbRectangle" Fill="{StaticResource ScrollBarButtonBackgroundBrush}" Margin="0,1,0,1"/> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="ThumbRectangle" Property="Fill" Value="{StaticResource ScrollBarButtonHighlightBackgroundBrush}" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Thumb.Template> </Thumb> </Track.Thumb> <Track.IncreaseRepeatButton> <RepeatButton Command="ScrollBar.PageRightCommand" Background="Transparent"> <RepeatButton.Template> <ControlTemplate TargetType="RepeatButton"> <Rectangle Fill="{TemplateBinding Background}" Height="{TemplateBinding ActualHeight}" Width="{TemplateBinding ActualWidth}" /> </ControlTemplate> </RepeatButton.Template> </RepeatButton> </Track.IncreaseRepeatButton> </Track> <Button Grid.Column="2" Command="ScrollBar.LineRightCommand" Width="{StaticResource ScrollBarWidth}"> <Button.Template> <ControlTemplate TargetType="Button"> <Grid> <Rectangle x:Name="ButtonRectangle" Fill="Transparent"/> <Path HorizontalAlignment="Center" VerticalAlignment="Center" Data="M 10 5 L 0 0 L 0 10 Z" Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ScrollBar}}" Stretch="Fill" Height="{StaticResource ScrollBarArrowHeight}" Width="{StaticResource ScrollBarArrowWidth}" /> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="ButtonRectangle" Property="Fill" Value="{StaticResource ScrollBarButtonHighlightBackgroundBrush}" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Button.Template> </Button> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Trigger> </Style.Triggers> </Style> </ResourceDictionary>
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות