feat: simplify slider template, add error.

This commit is contained in:
rabbitism 2023-05-05 10:52:08 +08:00
parent 5f7e1510f1
commit bac20dbdbf

View File

@ -60,10 +60,10 @@
CornerRadius="{TemplateBinding CornerRadius}" /> CornerRadius="{TemplateBinding CornerRadius}" />
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>
<Style Selector="^:pointerover /template/ Border"> <Style Selector="^:pointerover">
<Setter Property="BorderBrush" Value="{DynamicResource SliderThumbPointeroverBorderBrush}" /> <Setter Property="BorderBrush" Value="{DynamicResource SliderThumbPointeroverBorderBrush}" />
</Style> </Style>
<Style Selector="^:pressed /template/ Border"> <Style Selector="^:pressed">
<Setter Property="BorderBrush" Value="{DynamicResource SliderThumbPressedBorderBrush}" /> <Setter Property="BorderBrush" Value="{DynamicResource SliderThumbPressedBorderBrush}" />
</Style> </Style>
</ControlTheme> </ControlTheme>
@ -75,165 +75,155 @@
<Style Selector="^:horizontal"> <Style Selector="^:horizontal">
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate TargetType="Slider"> <ControlTemplate TargetType="Slider">
<Border <DataValidationErrors>
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{TemplateBinding CornerRadius}">
<Grid <Grid
x:Name="SliderContainer" x:Name="SliderContainer"
Margin="{TemplateBinding Padding}" Margin="{TemplateBinding Padding}"
Background="Transparent"> Background="Transparent"
RowDefinitions="Auto,Auto,Auto">
<Grid.Styles> <Grid.Styles>
<Style Selector="TickBar"> <Style Selector="TickBar">
<Setter Property="ReservedSpace" Value="{Binding #PART_Track.Thumb.Bounds}" /> <Setter Property="ReservedSpace" Value="{Binding #PART_Track.Thumb.Bounds}" />
</Style> </Style>
</Grid.Styles> </Grid.Styles>
<Grid x:Name="HorizontalTemplate" RowDefinitions="Auto,Auto,Auto"> <TickBar
<TickBar Name="TopTickBar"
Name="TopTickBar" Grid.Row="0"
Grid.Row="0" Height="{DynamicResource SliderTickHorizontalHeight}"
Height="{DynamicResource SliderTickHorizontalHeight}" Margin="0,0,0,4"
Margin="0,0,0,4" VerticalAlignment="Bottom"
VerticalAlignment="Bottom" Fill="{DynamicResource SliderTickForeground}"
Fill="{DynamicResource SliderTickForeground}" IsVisible="False"
IsVisible="False" Maximum="{TemplateBinding Slider.Maximum}"
Maximum="{TemplateBinding Slider.Maximum}" Minimum="{TemplateBinding Slider.Minimum}"
Minimum="{TemplateBinding Slider.Minimum}" Orientation="{TemplateBinding Slider.Orientation}"
Orientation="{TemplateBinding Slider.Orientation}" Placement="Top"
Placement="Top" TickFrequency="{TemplateBinding Slider.TickFrequency}"
TickFrequency="{TemplateBinding Slider.TickFrequency}" Ticks="{TemplateBinding Ticks}" />
Ticks="{TemplateBinding Ticks}" /> <TickBar
<TickBar Name="BottomTickBar"
Name="BottomTickBar" Grid.Row="2"
Grid.Row="2" Height="{DynamicResource SliderTickHorizontalHeight}"
Height="{DynamicResource SliderTickHorizontalHeight}" Margin="0,4,0,0"
Margin="0,4,0,0" VerticalAlignment="Top"
VerticalAlignment="Top" Fill="{DynamicResource SliderTickForeground}"
Fill="{DynamicResource SliderTickForeground}" IsVisible="False"
IsVisible="False" Maximum="{TemplateBinding Slider.Maximum}"
Maximum="{TemplateBinding Slider.Maximum}" Minimum="{TemplateBinding Slider.Minimum}"
Minimum="{TemplateBinding Slider.Minimum}" Orientation="{TemplateBinding Slider.Orientation}"
Orientation="{TemplateBinding Slider.Orientation}" Placement="Bottom"
Placement="Bottom" TickFrequency="{TemplateBinding Slider.TickFrequency}"
TickFrequency="{TemplateBinding Slider.TickFrequency}" Ticks="{TemplateBinding Ticks}" />
Ticks="{TemplateBinding Ticks}" /> <Track
<Track Name="PART_Track"
Name="PART_Track" Grid.Row="1"
Grid.Row="1" IsDirectionReversed="{TemplateBinding IsDirectionReversed}"
IsDirectionReversed="{TemplateBinding IsDirectionReversed}" Maximum="{TemplateBinding Maximum}"
Maximum="{TemplateBinding Maximum}" Minimum="{TemplateBinding Minimum}"
Minimum="{TemplateBinding Minimum}" Orientation="Horizontal"
Orientation="Horizontal" Value="{TemplateBinding Value,
Value="{TemplateBinding Value, Mode=TwoWay}">
Mode=TwoWay}"> <Track.DecreaseButton>
<Track.DecreaseButton> <RepeatButton
<RepeatButton Name="PART_DecreaseButton"
Name="PART_DecreaseButton" Background="{TemplateBinding Foreground}"
Background="{TemplateBinding Foreground}" Focusable="False"
Focusable="False" Theme="{StaticResource SliderHorizontalRepeatButton}" />
Theme="{StaticResource SliderHorizontalRepeatButton}" /> </Track.DecreaseButton>
</Track.DecreaseButton> <Track.IncreaseButton>
<Track.IncreaseButton> <RepeatButton
<RepeatButton Name="PART_IncreaseButton"
Name="PART_IncreaseButton" Background="{TemplateBinding Background}"
Background="{TemplateBinding Background}" Focusable="False"
Focusable="False" Theme="{StaticResource SliderHorizontalRepeatButton}" />
Theme="{StaticResource SliderHorizontalRepeatButton}" /> </Track.IncreaseButton>
</Track.IncreaseButton> <Thumb
<Thumb Name="thumb"
Name="thumb" Width="{DynamicResource SliderThumbWidth}"
Width="{DynamicResource SliderThumbWidth}" Height="{DynamicResource SliderThumbHeight}"
Height="{DynamicResource SliderThumbHeight}" DataContext="{TemplateBinding Value}"
DataContext="{TemplateBinding Value}" Theme="{StaticResource SliderThumbTheme}" />
Theme="{StaticResource SliderThumbTheme}" /> </Track>
</Track>
</Grid>
</Grid> </Grid>
</Border> </DataValidationErrors>
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>
</Style> </Style>
<Style Selector="^:vertical"> <Style Selector="^:vertical">
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate> <ControlTemplate>
<Border <DataValidationErrors>
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{TemplateBinding CornerRadius}">
<Grid <Grid
x:Name="SliderContainer" x:Name="SliderContainer"
MinWidth="{DynamicResource SliderVerticalWidth}"
Margin="{TemplateBinding Padding}" Margin="{TemplateBinding Padding}"
Background="{DynamicResource SliderContainerBackground}"> Background="{DynamicResource SliderContainerBackground}"
ColumnDefinitions="Auto,Auto,Auto">
<Grid.Styles> <Grid.Styles>
<Style Selector="TickBar"> <Style Selector="TickBar">
<Setter Property="ReservedSpace" Value="{Binding #PART_Track.Thumb.Bounds}" /> <Setter Property="ReservedSpace" Value="{Binding #PART_Track.Thumb.Bounds}" />
</Style> </Style>
</Grid.Styles> </Grid.Styles>
<Grid <TickBar
x:Name="VerticalTemplate" Name="LeftTickBar"
MinWidth="{DynamicResource SliderVerticalWidth}" Grid.Column="0"
ColumnDefinitions="Auto,Auto,Auto"> Width="{DynamicResource SliderTickVerticalWidth}"
<TickBar Margin="0,0,4,0"
Name="LeftTickBar" HorizontalAlignment="Right"
Grid.Column="0" Fill="{DynamicResource SliderTickForeground}"
Width="{DynamicResource SliderTickVerticalWidth}" IsVisible="False"
Margin="0,0,4,0" Maximum="{TemplateBinding Slider.Maximum}"
HorizontalAlignment="Right" Minimum="{TemplateBinding Slider.Minimum}"
Fill="{DynamicResource SliderTickForeground}" Orientation="{TemplateBinding Slider.Orientation}"
IsVisible="False" Placement="Left"
Maximum="{TemplateBinding Slider.Maximum}" TickFrequency="{TemplateBinding Slider.TickFrequency}"
Minimum="{TemplateBinding Slider.Minimum}" Ticks="{TemplateBinding Ticks}" />
Orientation="{TemplateBinding Slider.Orientation}" <TickBar
Placement="Left" Name="RightTickBar"
TickFrequency="{TemplateBinding Slider.TickFrequency}" Grid.Column="2"
Ticks="{TemplateBinding Ticks}" /> Width="{DynamicResource SliderTickVerticalWidth}"
<TickBar Margin="4,0,0,0"
Name="RightTickBar" HorizontalAlignment="Left"
Grid.Column="2" Fill="{DynamicResource SliderTickForeground}"
Width="{DynamicResource SliderTickVerticalWidth}" IsVisible="False"
Margin="4,0,0,0" Maximum="{TemplateBinding Slider.Maximum}"
HorizontalAlignment="Left" Minimum="{TemplateBinding Slider.Minimum}"
Fill="{DynamicResource SliderTickForeground}" Orientation="{TemplateBinding Slider.Orientation}"
IsVisible="False" Placement="Right"
Maximum="{TemplateBinding Slider.Maximum}" TickFrequency="{TemplateBinding Slider.TickFrequency}"
Minimum="{TemplateBinding Slider.Minimum}" Ticks="{TemplateBinding Ticks}" />
Orientation="{TemplateBinding Slider.Orientation}" <Track
Placement="Right" Name="PART_Track"
TickFrequency="{TemplateBinding Slider.TickFrequency}" Grid.Column="1"
Ticks="{TemplateBinding Ticks}" /> IsDirectionReversed="{TemplateBinding IsDirectionReversed}"
<Track Maximum="{TemplateBinding Maximum}"
Name="PART_Track" Minimum="{TemplateBinding Minimum}"
Grid.Column="1" Orientation="Vertical"
IsDirectionReversed="{TemplateBinding IsDirectionReversed}" Value="{TemplateBinding Value,
Maximum="{TemplateBinding Maximum}" Mode=TwoWay}">
Minimum="{TemplateBinding Minimum}" <Track.DecreaseButton>
Orientation="Vertical" <RepeatButton
Value="{TemplateBinding Value, Name="PART_DecreaseButton"
Mode=TwoWay}"> Background="{TemplateBinding Foreground}"
<Track.DecreaseButton> Focusable="False"
<RepeatButton Theme="{StaticResource SliderVerticalRepeatButton}" />
Name="PART_DecreaseButton" </Track.DecreaseButton>
Background="{TemplateBinding Foreground}" <Track.IncreaseButton>
Focusable="False" <RepeatButton
Theme="{StaticResource SliderVerticalRepeatButton}" /> Name="PART_IncreaseButton"
</Track.DecreaseButton> Background="{TemplateBinding Background}"
<Track.IncreaseButton> Focusable="False"
<RepeatButton Theme="{StaticResource SliderVerticalRepeatButton}" />
Name="PART_IncreaseButton" </Track.IncreaseButton>
Background="{TemplateBinding Background}" <Thumb
Focusable="False" Name="thumb"
Theme="{StaticResource SliderVerticalRepeatButton}" /> Width="{DynamicResource SliderThumbWidth}"
</Track.IncreaseButton> Height="{DynamicResource SliderThumbHeight}"
<Thumb DataContext="{TemplateBinding Value}"
Name="thumb" Theme="{StaticResource SliderThumbTheme}" />
Width="{DynamicResource SliderThumbWidth}" </Track>
Height="{DynamicResource SliderThumbHeight}"
DataContext="{TemplateBinding Value}"
Theme="{StaticResource SliderThumbTheme}" />
</Track>
</Grid>
</Grid> </Grid>
</Border> </DataValidationErrors>
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>
</Style> </Style>
@ -263,6 +253,10 @@
<Setter Property="IsVisible" Value="True" /> <Setter Property="IsVisible" Value="True" />
</Style> </Style>
<Style Selector="^:error /template/ Thumb#thumb">
<Setter Property="Thumb.BorderBrush" Value="{DynamicResource DataValidationErrorsSelectedBorderBrush}" />
</Style>
<!-- Disabled State --> <!-- Disabled State -->
<Style Selector="^:disabled"> <Style Selector="^:disabled">