WPF - Изменить поле прокрутки в текстовом поле с помощью стилей - PullRequest
0 голосов
/ 13 мая 2018

Я определил неявный стиль для полосы прокрутки и установил некоторые свойства, и я использую его для большинства ScrollViewrs.Часть стиля:

<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
        <Setter Property="Background" Value="#FF283542" />
        <Setter Property="Margin" Value="0,-32,0,0" />
        <Setter Property="Width" Value="5" />
</Style>

Но у меня есть несколько TextBox, которые я хочу, чтобы они имели такой же неявный стиль полосы прокрутки для своих полос прокрутки, но с разным полем.

Я могу это сделатьдобавляя ресурсы в каждый TextBox и переопределяя неявный стиль ScrollBar, например:

    <TextBox Style="{StaticResource big-text-style}">
                        <TextBox.Resources>
                            <Style TargetType="{x:Type ScrollBar}" 
                                   BasedOn="{StaticResource {x:Type ScrollBar}}">
                                <Setter Property="Margin" Value="0"/>
                            </Style>
                        </TextBox.Resources>
    </TextBox>

Этот код дает мне необходимую функциональность.Но проблема с этим подходом состоит в том, что я должен написать эти строки кода для каждого TextBox!Было бы намного лучше, если бы я мог поместить это как часть самого стиля TextBox.

Интересно, есть ли способ поместить его в стиль TextBox, чтобы каждый TextBox, который имеет стиль большого текста (дляпример), есть переопределенная полоса прокрутки?

Или есть лучший способ реализовать подобные вещи?

Спасибо за помощь!

1 Ответ

0 голосов
/ 13 мая 2018

Вы можете добавить переопределяющий стиль ScrollBar к Resources самого стиля TextBox:

<Style x:Key="big-text-style" TargetType="TextBox">
    <Style.Resources>
        <Style TargetType="{x:Type ScrollBar}" BasedOn="{StaticResource {x:Type ScrollBar}}">
            <Setter Property="Margin" Value="0"/>
        </Style>
    </Style.Resources>
</Style>
...