2

我正在尝试覆盖 Avalonia 的 Slider 主题。它在整个 Slider 上工作,Thumb 也得到更新,但由于某种原因,我无法将自定义主题应用于 RepeatButtons PART_DecreaseButton 和 PART_IncreaseButton

在这种情况下,背景确实设置为绿色,但没有应用模板属性。为什么?

<Style Selector="local|MediaPlayer Slider.seekBar RepeatButton#PART_DecreaseButton">
    <Setter Property="Focusable" Value="False" />
    <Setter Property="Background" Value="Green" />
    <Setter Property="Template">
        <ControlTemplate>
            <Grid>
                <Rectangle Height="11" /> <!-- Fill="#01FFFFFF" -->
                <Border Padding="0" BorderThickness="1,1,0,1" BorderBrush="{DynamicResource MediaPlayerSeekBarBorderBrush}"
                        Background="{DynamicResource MediaPlayerSeekBarDecreaseBrush}" Height="7"
                        IsHitTestVisible="False" />
            </Grid>
        </ControlTemplate>
    </Setter>
</Style>

相比之下,拇指在工作

<Style Selector="local|MediaPlayer Slider.seekBar Thumb">
    <Setter Property="Template">
        <ControlTemplate>
            <Border BorderThickness="1" Height="11" Width="9"
                    Background="{DynamicResource MediaPlayerThumbFillBrush}"
                    BorderBrush="{DynamicResource MediaPlayerThumbBorderBrush}" />
        </ControlTemplate>
    </Setter>
</Style>

默认 Slider.xaml 实现在这里。

编辑:这是一个简单的窗口来重现它。

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="HanumanInstitute.MediaPlayer.Avalonia.Sample.Window1"
        Title="Window1" Width="400" Height="200">
    <Window.Styles>
        <Style Selector="Slider.seekBar RepeatButton#PART_DecreaseButton">
            <Setter Property="Focusable" Value="False" />
            <Setter Property="Background" Value="Black" />
            <Setter Property="Template">
                <ControlTemplate>
                    <Grid>
                        <Border Padding="0" BorderThickness="3,3,0,3" BorderBrush="Blue"
                                Background="Blue" Height="7"
                                IsHitTestVisible="False" />
                    </Grid>
                </ControlTemplate>
            </Setter>
        </Style>
        <Style Selector="Slider.seekBar Thumb">
            <Setter Property="Template">
                <ControlTemplate>
                    <Border Width="10" Height="30" Background="Gray" />
                </ControlTemplate>
            </Setter>
        </Style>
    </Window.Styles>
    <Slider Classes="seekBar" VerticalAlignment="Center" />
</Window>
4

0 回答 0