2010-08-24 9 views

Répondre

4

Bien sûr - ici est le modèle par défaut pour ScrollViewer modifié pour transposer la ligne de la grille 0 et grille la ligne 1, qui met la barre de défilement horizontale en haut:

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

Appliquer ce modèle à votre ScrollViewer et vous devrait être tout ensemble. Expression Blend rend les tâches de ce type triviales - je le recommande.

+0

Cela fonctionne! Cela a vraiment aidé! Cependant, "x: key" dans votre XAML m'a donné une erreur, donc je l'ai simplement enlevé et ça a marché! Merci beaucoup, Jay! EDIT: Voici un +1 pour vous! –

+0

@ xplinux557 le 'x: Key' est utilisé si vous stockez le modèle en tant que ressource et ne voulez pas qu'il s'applique à tous les objets' ScrollViewer' dans la portée de la ressource. – Jay

Questions connexes