2010-11-10 5 views
3

Как заставить scrollviewer в моем текстовом поле использовать стиль прокрутки?Set Scrollbar Стиль текстового поля

<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> 
+0

Что вы имеете в виду под «скроллинга стиль?" Отображается ли полоса прокрутки? Или что-то другое? – cdhowie

+0

Я обновил свой вопрос – Robert

+0

А, я вижу. К сожалению, я тоже не знаю. :) – cdhowie

ответ

0

Вы должны изменить шаблон 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. Надеюсь это поможет.

2

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

<TextBox> 
    <TextBox.Resources> 
     <Style TargetType="{x:Type ScrollBar}" 
       BasedOn="{StaticResource MyScrollBarStyle}"></Style> 
    </TextBox.Resources> 
</TextBox> 
0

В Silverlight 5,

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

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