Как изменить стиль слайдера MediaPlayerElement на Xbox? - PullRequest
0 голосов
/ 14 января 2020

Как изменить стиль по умолчанию 'MediaSliderStyle' MediaPlayerElement на XBox? Я могу настроить некоторые цвета в MediaTransportControls.xaml и удалить сфокусированную зеленую рамку по умолчанию. Но как сделать так, чтобы круг увеличивался в 2 раза больше, когда фокусировался на весь слайдер.

В настоящее время, когда фокусируется на слайдере как pi c .1, я должен нажать GamePadA и повернуться к pi c .2, затем переместить временную шкалу.

Как определить поведение, такое как Android TV, exo player, чтобы позволить пользователю выполнять меньше операций.

Pi c .1 Focused .

enter image description here

Pi c .2 Выбранная временная шкала для ускоренной перемотки вперед и назад.

enter image description here

Pi c .3 Android Телевидение (Exo player), временная шкала не сфокусирована. enter image description here

Pi c .4 Android Телевидение (Exo player), шкала времени сфокусирована, нажмите влево / вправо для быстрой перемотки вперед и назад. enter image description here

1 Ответ

1 голос
/ 14 января 2020

Здесь можно найти стиль MediaTransportControls по умолчанию здесь , который также включает полный код стиля для индикатора выполнения.

MediaTransportControls состоит из нескольких элементов управления. Индикатор выполнения в основном состоит из Slider и Thumb, но он не отображает такие состояния, как ThumbFocus, только регулярные состояния, такие как PointerOver, Pressed, et c.

В коде по умолчанию мы можем изменить размер большого пальца, изменив ширину / высоту HorizontalThumb:

...
<!-- Default width / height are 24 -->
<Thumb x:Name="HorizontalThumb"
       Style="{StaticResource SliderThumbStyle}"
       Height="10"
       Width="10"
       Grid.Row="0"
       Grid.RowSpan="3"
       Grid.Column="1"
       FocusVisualMargin="-14,-6,-14,-6"
       AutomationProperties.AccessibilityView="Raw">
...

Затем измените размер большого пальца в состоянии PointerOver и Pressed состояние:

<VisualState x:Name="Pressed">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="HorizontalThumb" Storyboard.TargetProperty="Width">
            <DiscreteObjectKeyFrame KeyTime="0" Value="24" />
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="HorizontalThumb" Storyboard.TargetProperty="Height">
            <DiscreteObjectKeyFrame KeyTime="0" Value="24" />
        </ObjectAnimationUsingKeyFrames>
        ...
    </Storyboard>
</VisualState>

Хорошо работает в режиме клавиатуры и мыши, но не будет действовать, если элемент управления выбран переключением фокуса.

Если этот эффект важен, вы можете нужно переписать Slider и создавать события при получении фокуса.

С уважением.

...