Browse Source

try making slider work

feature/fluent-slider
Jumar Macato 6 years ago
committed by Dan Walmsley
parent
commit
f255f2685e
  1. 15
      src/Avalonia.Controls/Slider.cs
  2. 207
      src/Avalonia.Themes.Fluent/Slider.xaml
  3. 2
      src/Avalonia.Visuals/Media/Color.cs
  4. 36
      src/Avalonia.Visuals/Media/ColorToSolidColorBrushConverter.cs

15
src/Avalonia.Controls/Slider.cs

@ -94,9 +94,18 @@ namespace Avalonia.Controls
_increaseButton.Click -= IncreaseClick; _increaseButton.Click -= IncreaseClick;
} }
_decreaseButton = e.NameScope.Find<Button>("PART_DecreaseButton"); // _decreaseButton = e.NameScope.Find<Button>("PART_DecreaseButton");
_track = e.NameScope.Find<Track>("PART_Track");
_increaseButton = e.NameScope.Find<Button>("PART_IncreaseButton"); if (Orientation == Orientation.Horizontal)
{
_track = e.NameScope.Find<Track>("HorizontalThumb");
}
else
{
_track = e.NameScope.Find<Track>("VerticalThumb");
}
// _increaseButton = e.NameScope.Find<Button>("PART_IncreaseButton");
if (_decreaseButton != null) if (_decreaseButton != null)
{ {

207
src/Avalonia.Themes.Fluent/Slider.xaml

@ -5,28 +5,27 @@
<x:Double x:Key="SliderPostContentMargin">15</x:Double> <x:Double x:Key="SliderPostContentMargin">15</x:Double>
<x:Double x:Key="SliderHorizontalHeight">32</x:Double> <x:Double x:Key="SliderHorizontalHeight">32</x:Double>
<x:Double x:Key="SliderVerticalWidth">32</x:Double> <x:Double x:Key="SliderVerticalWidth">32</x:Double>
<x:Double x:Key="SliderThumbCornerRadius">10</x:Double> <Thickness x:Key="SliderThumbCornerRadius">10</Thickness>
<x:Double x:Key="SliderHorizontalThumbWidth">20</x:Double> <x:Double x:Key="SliderHorizontalThumbWidth">20</x:Double>
<x:Double x:Key="SliderHorizontalThumbHeight">20</x:Double> <x:Double x:Key="SliderHorizontalThumbHeight">20</x:Double>
<x:Double x:Key="SliderVerticalThumbWidth">20</x:Double> <x:Double x:Key="SliderVerticalThumbWidth">20</x:Double>
<x:Double x:Key="SliderVerticalThumbHeight">20</x:Double> <x:Double x:Key="SliderVerticalThumbHeight">20</x:Double>
</Styles.Resources> </Styles.Resources>
<!-- Disabled State --> <!-- Disabled State -->
<Style Selector="Slider:disabled /template/ ContentPresenter#HeaderContentPresenter"> <!-- <Style Selector="Slider:disabled /template/ ContentPresenter#HeaderContentPresenter">
<Setter Property="Foreground" Value="{DynamicResource SliderHeaderForegroundDisabled}" /> <Setter Property="Foreground" Value="{DynamicResource SliderHeaderForegroundDisabled}" />
</Style> -->
<Style Selector="Slider:disabled /template/ Border#HorizontalDecreaseRect">
<Setter Property="Background" Value="{DynamicResource SliderTrackValueFillDisabled}" />
</Style> </Style>
<Style Selector="Slider:disabled /template/ Rectangle#HorizontalDecreaseRect"> <Style Selector="Slider:disabled /template/ Border#HorizontalTrackRect">
<Setter Property="Fill" Value="{DynamicResource SliderTrackValueFillDisabled}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackFillDisabled}" />
</Style> </Style>
<Style Selector="Slider:disabled /template/ Rectangle#HorizontalTrackRect"> <Style Selector="Slider:disabled /template/ Border#VerticalDecreaseRect">
<Setter Property="Fill" Value="{DynamicResource SliderTrackFillDisabled}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackValueFillDisabled}" />
</Style> </Style>
<Style Selector="Slider:disabled /template/ Rectangle#VerticalDecreaseRect"> <Style Selector="Slider:disabled /template/ Border#VerticalTrackRect">
<Setter Property="Fill" Value="{DynamicResource SliderTrackValueFillDisabled}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackFillDisabled}" />
</Style>
<Style Selector="Slider:disabled /template/ Rectangle#VerticalTrackRect">
<Setter Property="Fill" Value="{DynamicResource SliderTrackFillDisabled}" />
</Style> </Style>
<Style Selector="Slider:disabled /template/ Thumb#HorizontalThumb"> <Style Selector="Slider:disabled /template/ Thumb#HorizontalThumb">
<Setter Property="Background" Value="{DynamicResource SliderThumbBackgroundDisabled}" /> <Setter Property="Background" Value="{DynamicResource SliderThumbBackgroundDisabled}" />
@ -34,7 +33,7 @@
<Style Selector="Slider:disabled /template/ Thumb#VerticalThumb"> <Style Selector="Slider:disabled /template/ Thumb#VerticalThumb">
<Setter Property="Background" Value="{DynamicResource SliderThumbBackgroundDisabled}" /> <Setter Property="Background" Value="{DynamicResource SliderThumbBackgroundDisabled}" />
</Style> </Style>
<Style Selector="Slider:disabled /template/ TickBar#TopTickBar"> <!-- <Style Selector="Slider:disabled /template/ TickBar#TopTickBar">
<Setter Property="Background" Value="{DynamicResource SliderTickBarFillDisabled}" /> <Setter Property="Background" Value="{DynamicResource SliderTickBarFillDisabled}" />
</Style> </Style>
<Style Selector="Slider:disabled /template/ TickBar#BottomTickBar"> <Style Selector="Slider:disabled /template/ TickBar#BottomTickBar">
@ -45,19 +44,18 @@
</Style> </Style>
<Style Selector="Slider:disabled /template/ TickBar#RightTickBar"> <Style Selector="Slider:disabled /template/ TickBar#RightTickBar">
<Setter Property="Background" Value="{DynamicResource SliderTickBarFillDisabled}" /> <Setter Property="Background" Value="{DynamicResource SliderTickBarFillDisabled}" />
</Style> </Style> -->
<Style Selector="Slider:disabled /template/ Grid#SliderContainer"> <Style Selector="Slider:disabled /template/ Grid#SliderContainer">
<Setter Property="Background" Value="{DynamicResource SliderContainerBackgroundDisabled}" /> <Setter Property="Background" Value="{DynamicResource SliderContainerBackgroundDisabled}" />
</Style> </Style>
<!-- Pressed State --> <!-- Pressed State -->
<Style Selector="Slider:pressed /template/ Rectangle#HorizontalTrackRect"> <Style Selector="Slider:pressed /template/ Border#HorizontalTrackRect">
<Setter Property="Fill" Value="{DynamicResource SliderTrackFillPressed}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackFillPressed}" />
</Style> </Style>
<Style Selector="Slider:pressed /template/ Rectangle#HorizontalTrackRect"> <Style Selector="Slider:pressed /template/ Border#HorizontalTrackRect">
<Setter Property="Fill" Value="{DynamicResource SliderTrackFillPressed}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackFillPressed}" />
</Style> </Style>
<Style Selector="Slider:pressed /template/ Rectangle#VerticalTrackRect"> <Style Selector="Slider:pressed /template/ Border#VerticalTrackRect">
<Setter Property="Background" Value="{DynamicResource SliderTrackFillPressed}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackFillPressed}" />
</Style> </Style>
<Style Selector="Slider:pressed /template/ Thumb#HorizontalThumb"> <Style Selector="Slider:pressed /template/ Thumb#HorizontalThumb">
@ -69,19 +67,18 @@
<Style Selector="Slider:pressed /template/ Grid#SliderContainer"> <Style Selector="Slider:pressed /template/ Grid#SliderContainer">
<Setter Property="Background" Value="{DynamicResource SliderContainerBackgroundPressed}" /> <Setter Property="Background" Value="{DynamicResource SliderContainerBackgroundPressed}" />
</Style> </Style>
<Style Selector="Slider:pressed /template/ Rectangle#HorizontalDecreaseRect"> <Style Selector="Slider:pressed /template/ Border#HorizontalDecreaseRect">
<Setter Property="Fill" Value="{DynamicResource SliderTrackValueFillPressed}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackValueFillPressed}" />
</Style> </Style>
<Style Selector="Slider:pressed /template/ Rectangle#VerticalDecreaseRect"> <Style Selector="Slider:pressed /template/ Border#VerticalDecreaseRect">
<Setter Property="Fill" Value="{DynamicResource SliderTrackValueFillPressed}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackValueFillPressed}" />
</Style> </Style>
<!-- PointerOver State --> <!-- PointerOver State -->
<Style Selector="Slider:pointerover /template/ Rectangle#HorizontalTrackRect"> <Style Selector="Slider:pointerover /template/ Border#HorizontalTrackRect">
<Setter Property="Fill" Value="{DynamicResource SliderTrackFillPointerOver}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackFillPointerOver}" />
</Style> </Style>
<Style Selector="Slider:pointerover /template/ Rectangle#VerticalTrackRect"> <Style Selector="Slider:pointerover /template/ Border#VerticalTrackRect">
<Setter Property="Fill" Value="{DynamicResource SliderTrackFillPointerOver}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackFillPointerOver}" />
</Style> </Style>
<Style Selector="Slider:pointerover /template/ Thumb#HorizontalThumb"> <Style Selector="Slider:pointerover /template/ Thumb#HorizontalThumb">
<Setter Property="Background" Value="{DynamicResource SliderThumbBackgroundPointerOver}" /> <Setter Property="Background" Value="{DynamicResource SliderThumbBackgroundPointerOver}" />
@ -92,16 +89,15 @@
<Style Selector="Slider:pointerover /template/ Grid#SliderContainer"> <Style Selector="Slider:pointerover /template/ Grid#SliderContainer">
<Setter Property="Background" Value="{DynamicResource SliderContainerBackgroundPointerOver}" /> <Setter Property="Background" Value="{DynamicResource SliderContainerBackgroundPointerOver}" />
</Style> </Style>
<Style Selector="Slider:pointerover /template/ Rectangle#HorizontalDecreaseRect"> <Style Selector="Slider:pointerover /template/ Border#HorizontalDecreaseRect">
<Setter Property="Fill" Value="{DynamicResource SliderTrackValueFillPointerOver}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackValueFillPointerOver}" />
</Style> </Style>
<Style Selector="Slider:pointerover /template/ Rectangle#VerticalDecreaseRect"> <Style Selector="Slider:pointerover /template/ Border#VerticalDecreaseRect">
<Setter Property="Fill" Value="{DynamicResource SliderTrackValueFillPointerOver}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackValueFillPointerOver}" />
</Style> </Style>
<!-- TODO: We don't have an equivalent for this afaik. --> <!-- TODO: We don't have an equivalent for this afaik. -->
<!-- <VisualState x:Name="FocusDisengaged" /> <!-- <VisualState Name="FocusDisengaged" />
<VisualState x:Name="FocusEngagedHorizontal"> <VisualState Name="FocusEngagedHorizontal">
<Storyboard> <Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SliderContainer" Storyboard.TargetProperty="(Control.IsTemplateFocusTarget)"> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SliderContainer" Storyboard.TargetProperty="(Control.IsTemplateFocusTarget)">
<DiscreteObjectKeyFrame KeyTime="0" Value="False" /> <DiscreteObjectKeyFrame KeyTime="0" Value="False" />
@ -111,7 +107,7 @@
</ObjectAnimationUsingKeyFrames> </ObjectAnimationUsingKeyFrames>
</Storyboard> </Storyboard>
</VisualState> </VisualState>
<VisualState x:Name="FocusEngagedVertical"> <VisualState Name="FocusEngagedVertical">
<Storyboard> <Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SliderContainer" Storyboard.TargetProperty="(Control.IsTemplateFocusTarget)"> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SliderContainer" Storyboard.TargetProperty="(Control.IsTemplateFocusTarget)">
<DiscreteObjectKeyFrame KeyTime="0" Value="False" /> <DiscreteObjectKeyFrame KeyTime="0" Value="False" />
@ -120,7 +116,20 @@
<DiscreteObjectKeyFrame KeyTime="0" Value="True" /> <DiscreteObjectKeyFrame KeyTime="0" Value="True" />
</ObjectAnimationUsingKeyFrames> </ObjectAnimationUsingKeyFrames>
</Storyboard> </Storyboard>
--> -->
<Style Selector="Slider:vertical /template/ Grid#VerticalTemplate">
<Setter Property="IsVisible" Value="True" />
</Style>
<Style Selector="Slider:vertical /template/ Grid#HorizontalTemplate">
<Setter Property="IsVisible" Value="False" />
</Style>
<Style Selector="Slider:horizontal /template/ Grid#HorizontalTemplate">
<Setter Property="IsVisible" Value="True" />
</Style>
<Style Selector="Slider:horizontal /template/ Grid#VerticalTemplate">
<Setter Property="IsVisible" Value="False" />
</Style>
<Style Selector="Slider"> <Style Selector="Slider">
<Setter Property="Background" Value="{DynamicResource SliderTrackFill}" /> <Setter Property="Background" Value="{DynamicResource SliderTrackFill}" />
@ -128,93 +137,73 @@
<Setter Property="Foreground" Value="{DynamicResource SliderTrackValueFill}" /> <Setter Property="Foreground" Value="{DynamicResource SliderTrackValueFill}" />
<Setter Property="FontFamily" Value="{DynamicResource ContentControlThemeFontFamily}" /> <Setter Property="FontFamily" Value="{DynamicResource ContentControlThemeFontFamily}" />
<Setter Property="FontSize" Value="{DynamicResource ControlContentThemeFontSize}" /> <Setter Property="FontSize" Value="{DynamicResource ControlContentThemeFontSize}" />
<Setter Property="ManipulationMode" Value="None" /> <!-- TODO Non-existent properties in avalonia. -->
<!-- <Setter Property="ManipulationMode" Value="None" />
<Setter Property="UseSystemFocusVisuals" Value="{StaticResource UseSystemFocusVisuals}" /> <Setter Property="UseSystemFocusVisuals" Value="{StaticResource UseSystemFocusVisuals}" />
<Setter Property="FocusVisualMargin" Value="-7,0,-7,0" /> <Setter Property="FocusVisualMargin" Value="-7,0,-7,0" />
<Setter Property="IsFocusEngagementEnabled" Value="True" /> <Setter Property="IsFocusEngagementEnabled" Value="True" /> -->
<!-- NOTE: This was a contract7Present:Setter, not sure if this is correct -->
<Setter Property="CornerRadius" Value="{DynamicResource ControlCornerRadius}" />
<Setter Property="Template"> <Setter Property="Template">
<Setter.Value> <Setter.Value>
<ControlTemplate> <ControlTemplate>
<Grid Margin="{TemplateBinding Padding}"> <Border Margin="{TemplateBinding Padding}" CornerRadius="{DynamicResource ControlCornerRadius}">
<Grid.Resources> <Border.Styles>
<Style TargetType="Thumb" x:Key="SliderThumbStyle"> <Style Selector="Thumb.SliderThumbStyle">
<Setter Property="BorderThickness" Value="0" /> <Setter Property="BorderThickness" Value="0" />
<Setter Property="Background" Value="{DynamicResource SliderThumbBackground}" /> <Setter Property="Background" Value="{DynamicResource SliderThumbBackground}" />
<Setter Property="Template"> <Setter Property="Template">
<Setter.Value> <Setter.Value>
<ControlTemplate TargetType="Thumb"> <ControlTemplate>
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{DynamicResource SliderThumbCornerRadius}" /> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{DynamicResource SliderThumbCornerRadius}" />
</ControlTemplate> </ControlTemplate>
</Setter.Value> </Setter.Value>
</Setter> </Setter>
</Style> </Style>
</Grid.Resources> </Border.Styles>
<Grid.RowDefinitions> <Grid RowDefinitions="Auto,*">
<RowDefinition Height="Auto" /> <!-- TODO removed TextBlock.TextWrapping; bind Content -> Header and ContentTemplate -> HeaderTemplate -->
<RowDefinition Height="*" /> <ContentPresenter Name="HeaderContentPresenter" Grid.Row="0" TextBlock.FontWeight="{DynamicResource SliderHeaderThemeFontWeight}" TextBlock.Foreground="{DynamicResource SliderHeaderForeground}" Margin="{DynamicResource SliderTopHeaderMargin}"
</Grid.RowDefinitions> IsVisible="False" />
<ContentPresenter x:Name="HeaderContentPresenter" Grid.Row="0" Content="{TemplateBinding Header}" ContentTemplate="{TemplateBinding HeaderTemplate}" FontWeight="{DynamicResource SliderHeaderThemeFontWeight}" <!-- TODO removed Control.IsTemplateFocusTarget -->
Foreground="{DynamicResource SliderHeaderForeground}" Margin="{DynamicResource SliderTopHeaderMargin}" TextWrapping="Wrap" Visibility="Collapsed" x:DeferLoadStrategy="Lazy" /> <Grid Name="SliderContainer" Grid.Row="1" Background="{DynamicResource SliderContainerBackground}">
<Grid x:Name="SliderContainer" Grid.Row="1" Background="{DynamicResource SliderContainerBackground}" Control.IsTemplateFocusTarget="True"> <Grid Name="HorizontalTemplate" ColumnDefinitions="Auto,Auto,*" MinHeight="{DynamicResource SliderHorizontalHeight}">
<Grid x:Name="HorizontalTemplate" MinHeight="{DynamicResource SliderHorizontalHeight}"> <Grid.RowDefinitions>
<Grid.ColumnDefinitions> <RowDefinition Height="{DynamicResource SliderPreContentMargin}" />
<ColumnDefinition Width="Auto" /> <RowDefinition Height="Auto" />
<ColumnDefinition Width="Auto" /> <RowDefinition Height="{DynamicResource SliderPostContentMargin}" />
<ColumnDefinition Width="*" /> </Grid.RowDefinitions>
</Grid.ColumnDefinitions> <Border Name="HorizontalTrackRect" Background="{TemplateBinding Background}" Height="{DynamicResource SliderTrackThemeHeight}" Grid.Row="1" Grid.ColumnSpan="3" CornerRadius="{Binding CornerRadius}" />
<Grid.RowDefinitions> <Border Name="HorizontalDecreaseRect" Background="{TemplateBinding Foreground}" Grid.Row="1" CornerRadius="{Binding CornerRadius}" />
<RowDefinition Height="{DynamicResource SliderPreContentMargin}" /> <!-- TODO TickBars are not implemented yet. -->
<RowDefinition Height="Auto" /> <!--
<RowDefinition Height="{DynamicResource SliderPostContentMargin}" /> <TickBar Name="TopTickBar" Visibility="Collapsed" Fill="{DynamicResource SliderTickBarFill}" Height="{DynamicResource SliderOutsideTickBarThemeHeight}" VerticalAlignment="Bottom" Margin="0,0,0,4" Grid.ColumnSpan="3" />
</Grid.RowDefinitions> <TickBar Name="HorizontalInlineTickBar" Visibility="Collapsed" Fill="{DynamicResource SliderInlineTickBarFill}" Height="{DynamicResource SliderTrackThemeHeight}" Grid.Row="1" Grid.ColumnSpan="3" />
<Rectangle x:Name="HorizontalTrackRect" Fill="{TemplateBinding Background}" Height="{DynamicResource SliderTrackThemeHeight}" Grid.Row="1" Grid.ColumnSpan="3" <TickBar Name="BottomTickBar" Visibility="Collapsed" Fill="{DynamicResource SliderTickBarFill}" Height="{DynamicResource SliderOutsideTickBarThemeHeight}" VerticalAlignment="Top" Margin="0,4,0,0" Grid.Row="2" Grid.ColumnSpan="3" />
contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" -->
contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" <!-- TODO Removed FocusVisualMargin and AutomationProperties.AccessibilityView -->
contract7NotPresent:RadiusX="{Binding Source={DynamicResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" <Thumb Name="HorizontalThumb" Classes="SliderThumbStyle" DataContext="{TemplateBinding Value}" Height="{DynamicResource SliderHorizontalThumbHeight}" Width="{DynamicResource SliderHorizontalThumbWidth}" Grid.Row="0"
contract7NotPresent:RadiusY="{Binding Source={DynamicResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> Grid.RowSpan="3" Grid.Column="1" />
<Rectangle x:Name="HorizontalDecreaseRect" Fill="{TemplateBinding Foreground}" Grid.Row="1" </Grid>
contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" <Grid Name="VerticalTemplate" RowDefinitions="*,Auto,Auto" MinWidth="{DynamicResource SliderVerticalWidth}" IsVisible="False">
contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" <Grid.ColumnDefinitions>
contract7NotPresent:RadiusX="{Binding Source={DynamicResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" <ColumnDefinition Width="{DynamicResource SliderPreContentMargin}" />
contract7NotPresent:RadiusY="{Binding Source={DynamicResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> <ColumnDefinition Width="Auto" />
<TickBar x:Name="TopTickBar" Visibility="Collapsed" Fill="{DynamicResource SliderTickBarFill}" Height="{DynamicResource SliderOutsideTickBarThemeHeight}" VerticalAlignment="Bottom" Margin="0,0,0,4" Grid.ColumnSpan="3" /> <ColumnDefinition Width="{DynamicResource SliderPostContentMargin}" />
<TickBar x:Name="HorizontalInlineTickBar" Visibility="Collapsed" Fill="{DynamicResource SliderInlineTickBarFill}" Height="{DynamicResource SliderTrackThemeHeight}" Grid.Row="1" Grid.ColumnSpan="3" /> </Grid.ColumnDefinitions>
<TickBar x:Name="BottomTickBar" Visibility="Collapsed" Fill="{DynamicResource SliderTickBarFill}" Height="{DynamicResource SliderOutsideTickBarThemeHeight}" VerticalAlignment="Top" Margin="0,4,0,0" Grid.Row="2" Grid.ColumnSpan="3" /> <Border Name="VerticalTrackRect" Background="{TemplateBinding Background}" Width="{DynamicResource SliderTrackThemeHeight}" Grid.Column="1" Grid.RowSpan="3" CornerRadius="{Binding CornerRadius}" />
<Thumb x:Name="HorizontalThumb" Style="{StaticResource SliderThumbStyle}" DataContext="{TemplateBinding Value}" Height="{DynamicResource SliderHorizontalThumbHeight}" Width="{DynamicResource SliderHorizontalThumbWidth}" Grid.Row="0" <Border Name="VerticalDecreaseRect" Background="{TemplateBinding Foreground}" Grid.Column="1" Grid.Row="2" CornerRadius="{Binding CornerRadius}" />
Grid.RowSpan="3" Grid.Column="1" FocusVisualMargin="-14,-6,-14,-6" AutomationProperties.AccessibilityView="Raw" /> <!-- TODO TickBars are not implemented yet. -->
</Grid> <!--
<Grid x:Name="VerticalTemplate" MinWidth="{DynamicResource SliderVerticalWidth}" Visibility="Collapsed"> <TickBar Name="LeftTickBar" Visibility="Collapsed" Fill="{DynamicResource SliderTickBarFill}" Width="{DynamicResource SliderOutsideTickBarThemeHeight}" HorizontalAlignment="Right" Margin="0,0,4,0" Grid.RowSpan="3" />
<Grid.RowDefinitions> <TickBar Name="VerticalInlineTickBar" Visibility="Collapsed" Fill="{DynamicResource SliderInlineTickBarFill}" Width="{DynamicResource SliderTrackThemeHeight}" Grid.Column="1" Grid.RowSpan="3" />
<RowDefinition Height="*" /> <TickBar Name="RightTickBar" Visibility="Collapsed" Fill="{DynamicResource SliderTickBarFill}" Width="{DynamicResource SliderOutsideTickBarThemeHeight}" HorizontalAlignment="Left" Margin="4,0,0,0" Grid.Column="2" Grid.RowSpan="3" />
<RowDefinition Height="Auto" /> -->
<RowDefinition Height="Auto" /> <!-- TODO Removed FocusVisualMargin and AutomationProperties.AccessibilityView-->
</Grid.RowDefinitions> <Thumb Name="VerticalThumb" Classes="SliderThumbStyle" DataContext="{TemplateBinding Value}" Width="{DynamicResource SliderVerticalThumbWidth}" Height="{DynamicResource SliderVerticalThumbHeight}" Grid.Row="1" Grid.Column="0"
<Grid.ColumnDefinitions> Grid.ColumnSpan="3" />
<ColumnDefinition Width="{DynamicResource SliderPreContentMargin}" /> </Grid>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="{DynamicResource SliderPostContentMargin}" />
</Grid.ColumnDefinitions>
<Rectangle x:Name="VerticalTrackRect" Fill="{TemplateBinding Background}" Width="{DynamicResource SliderTrackThemeHeight}" Grid.Column="1" Grid.RowSpan="3"
contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}"
contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"
contract7NotPresent:RadiusX="{Binding Source={DynamicResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}"
contract7NotPresent:RadiusY="{Binding Source={DynamicResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" />
<Rectangle x:Name="VerticalDecreaseRect" Fill="{TemplateBinding Foreground}" Grid.Column="1" Grid.Row="2"
contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}"
contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"
contract7NotPresent:RadiusX="{Binding Source={DynamicResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}"
contract7NotPresent:RadiusY="{Binding Source={DynamicResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" />
<TickBar x:Name="LeftTickBar" Visibility="Collapsed" Fill="{DynamicResource SliderTickBarFill}" Width="{DynamicResource SliderOutsideTickBarThemeHeight}" HorizontalAlignment="Right" Margin="0,0,4,0" Grid.RowSpan="3" />
<TickBar x:Name="VerticalInlineTickBar" Visibility="Collapsed" Fill="{DynamicResource SliderInlineTickBarFill}" Width="{DynamicResource SliderTrackThemeHeight}" Grid.Column="1" Grid.RowSpan="3" />
<TickBar x:Name="RightTickBar" Visibility="Collapsed" Fill="{DynamicResource SliderTickBarFill}" Width="{DynamicResource SliderOutsideTickBarThemeHeight}" HorizontalAlignment="Left" Margin="4,0,0,0" Grid.Column="2"
Grid.RowSpan="3" />
<Thumb x:Name="VerticalThumb" Style="{StaticResource SliderThumbStyle}" DataContext="{TemplateBinding Value}" Width="{DynamicResource SliderVerticalThumbWidth}" Height="{DynamicResource SliderVerticalThumbHeight}" Grid.Row="1"
Grid.Column="0" Grid.ColumnSpan="3" FocusVisualMargin="-6,-14,-6,-14" AutomationProperties.AccessibilityView="Raw" />
</Grid> </Grid>
</Grid> </Grid>
</Grid> </Border>
</ControlTemplate> </ControlTemplate>
</Setter.Value> </Setter.Value>
</Setter> </Setter>

2
src/Avalonia.Visuals/Media/Color.cs

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel;
using System.Globalization; using System.Globalization;
using Avalonia.Animation.Animators; using Avalonia.Animation.Animators;
@ -7,6 +8,7 @@ namespace Avalonia.Media
/// <summary> /// <summary>
/// An ARGB color. /// An ARGB color.
/// </summary> /// </summary>
[TypeConverter(typeof(ColorToSolidColorBrushConverter))]
public readonly struct Color : IEquatable<Color> public readonly struct Color : IEquatable<Color>
{ {
static Color() static Color()

36
src/Avalonia.Visuals/Media/ColorToSolidColorBrushConverter.cs

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using Avalonia.Media.Immutable;
namespace Avalonia.Media
{
internal class ColorToSolidColorBrushConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(string);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
return Color.Parse((string)value);
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
return typeof(IBrush).IsAssignableFrom(destinationType);
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
if (typeof(IBrush).IsAssignableFrom(destinationType))
{
return new ImmutableSolidColorBrush((Color)value);
}
return null;
}
}
}
Loading…
Cancel
Save