Установить стиль полосы прокрутки текстового поля - PullRequest
3 голосов
/ 10 ноября 2010

Как сделать так, чтобы средство прокрутки в стиле текстового поля использовало мой стиль полосы прокрутки?

    <Style x:Key="MyTextBoxStyle" BasedOn="{x:Null}" TargetType="{x:Type TextBox}">                    
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TextBoxBase}">
                <Grid>
                    <Rectangle x:Name="_rct" Stroke="#FFA8AFBE" RadiusX="8" RadiusY="8" Fill="White" />
                    <Border Name="Border" BorderThickness="2" CornerRadius="8" BorderBrush="#FFA8AFBE" Background="White">                   
                        <ScrollViewer Margin="6"  x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                    </Border>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    </Style> 

Мой стиль полосы прокрутки:

    <Style x:Key="MyScrollBarStyle" TargetType="{x:Type ScrollBar}">
    <Setter Property="Background" Value="#ff007eb1"/>
    <Setter Property="BorderBrush" Value="Transparent"/>
    <Style.Triggers>
        <Trigger Property="Orientation" Value="Vertical">
            <Setter Property="Width" Value="5"/>
            <Setter Property="Height" Value="Auto" />
            <Setter Property="Template" Value="{StaticResource VerticalScrollBar}" />
        </Trigger>
        <Trigger Property="Orientation" Value="Horizontal">
            <Setter Property="Width" Value="Auto"/>
            <Setter Property="Height" Value="5" />
            <Setter Property="Template" Value="{StaticResource HorizontalScrollBar}" />
        </Trigger>
    </Style.Triggers>      
</Style>

Ответы [ 3 ]

2 голосов
/ 25 мая 2015

Вы можете сделать следующее:

<TextBox>
    <TextBox.Resources>
        <Style TargetType="{x:Type ScrollBar}"
                BasedOn="{StaticResource MyScrollBarStyle}"></Style>
    </TextBox.Resources>
</TextBox>
0 голосов
/ 08 июля 2015

В Silverlight 5

<TextBox  TextWrapping="Wrap" VerticalScrollBarVisibility="Auto">
 <TextBox.Resources>
     <Style TargetType="ScrollBar" BasedOn="{StaticResource ScrollBarStyle1}">
                            </Style>
  </TextBox.Resources>

Чтобы определить собственный стиль полосы прокрутки посетите здесь

0 голосов
/ 10 ноября 2010

Вам придется изменить шаблон ScrollViewer.

<ControlTemplate TargetType="{x:Type ScrollViewer}">
<Grid Background="{TemplateBinding Background}">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <ScrollBar 
        x:Name="PART_VerticalScrollBar"
        Grid.Column="1"
        Minimum="0.0"
        Maximum="{TemplateBinding ScrollableHeight}"
        ViewportSize="{TemplateBinding ViewportHeight}"
        Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=VerticalOffset, Mode=OneWay}"
        Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"         
        Cursor="Arrow"
        AutomationProperties.AutomationId="VerticalScrollBar"
        Style="{StaticResource MyScrollBarStyle}"/>
    <ScrollBar 
        x:Name="PART_HorizontalScrollBar"
        Orientation="Horizontal"
        Grid.Row="1"
        Minimum="0.0"
        Maximum="{TemplateBinding ScrollableWidth}"
        ViewportSize="{TemplateBinding ViewportWidth}"
        Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=HorizontalOffset, Mode=OneWay}"
        Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
        Cursor="Arrow"
        AutomationProperties.AutomationId="HorizontalScrollBar"
        Style="{StaticResource MyScrollBarStyle}"/>
    <ScrollContentPresenter 
        x:Name="PART_ScrollContentPresenter"
        Margin="{TemplateBinding Padding}"
        Content="{TemplateBinding Content}"
        ContentTemplate="{TemplateBinding ContentTemplate}"
        CanContentScroll="{TemplateBinding CanContentScroll}"/>
    <Rectangle 
        x:Name="Corner"
        Grid.Column="1"
        Grid.Row="1"
        Fill="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
</Grid>

Или вы можете удалить ключ стиля, чтобы он применялся ко всем элементам управления ScrollBar. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...