Как изменить StreamGeometry внутри NumericUpDown Avalonia
У меня есть необходимость изменить стандартный стиль контрола NumericUpDown так чтобы стрелки спинеры были направлены не вверх/вниз, а влево/вправо. У меня получилось обратится по селектору к элементу и изменить StreamGeometry, но после этого пропали все анимации по наведению и нажатию а также пропали границы самих кнопок, я добавил границы но все выглядит не так как на стандартных элементах. Как сделать так чтобы заменить StreamGeometry внутри самой кнопки при этом оставив анимацию и все вытекающие из контрола стили?
<Window.Resources>
<StreamGeometry x:Key="LeftArrowIcon">M9,0 L0,10 9,20 10,19 2,10 10,1 z</StreamGeometry>
<StreamGeometry x:Key="RightArrowIcon">M1,0 L10,10 1,20 0,19 8,10 0,1 z</StreamGeometry>
</Window.Resources>
<!-- Стиль для стрелки влево -->
<Style Selector="NumericUpDown#NumericLeftRight RepeatButton#PART_IncreaseButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border Background="Transparent" VerticalAlignment="Center" HorizontalAlignment="Center" BorderBrush="DimGray" Padding="10 5 12 4" BorderThickness="1,0,0,0">
<Border Background="Transparent">
<Path Data="{StaticResource LeftArrowIcon}" Fill="Black" />
</Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Стиль для стрелки вправо -->
<Style Selector="NumericUpDown#NumericLeftRight RepeatButton#PART_DecreaseButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border Background="Transparent" VerticalAlignment="Center" HorizontalAlignment="Center" BorderBrush="DimGray" Padding="12 5 10 4" BorderThickness="1,0,0,0">
<Border Background="Transparent">
<Path Data="{StaticResource RightArrowIcon}" Fill="Black"/>
</Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Label HorizontalAlignment="Center" Content="Текст (Влево/Вправо)" />
<NumericUpDown x:Name="NumericLeftRight" Increment="-1" Value="{Binding XPos1, Mode=TwoWay}" Margin="20,0,20,0"/>
Ответы (1 шт):
Автор решения: Mikhail
→ Ссылка
<Window.Resources>
<StreamGeometry x:Key="LeftArrowIcon">M9,0 L0,10 9,20 10,19 2,10 10,1 z</StreamGeometry>
<StreamGeometry x:Key="RightArrowIcon">M1,0 L10,10 1,20 0,19 8,10 0,1 z</StreamGeometry>
</Window.Resources>
<Style Selector="NumericUpDown#NumericLeftRight RepeatButton#PART_IncreaseButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<RepeatButton
IsTabStop="{TemplateBinding IsTabStop}"
Theme="{StaticResource FluentButtonSpinnerRepeatButton}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
VerticalAlignment="Stretch"
VerticalContentAlignment="Center"
Foreground="{TemplateBinding Foreground}"
MinWidth="34">
<PathIcon Data="{StaticResource LeftArrowIcon}" Width="16" Height="16"/>
</RepeatButton>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style Selector="NumericUpDown#NumericLeftRight RepeatButton#PART_DecreaseButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<RepeatButton
IsTabStop="{TemplateBinding IsTabStop}"
Theme="{StaticResource FluentButtonSpinnerRepeatButton}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
VerticalAlignment="Stretch"
VerticalContentAlignment="Center"
Foreground="{TemplateBinding Foreground}"
MinWidth="34">
<PathIcon Data="{StaticResource RightArrowIcon}" Width="16" Height="16"/>
</RepeatButton>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Надо было просто внутри шаблона сделать не бордер а сам repeatbutton