Si je comprends correctement votre demande:
- Vous ne pas veulent vraiment faire la ListView pour faire défiler vos données au centre
- Vous faites veulent faire apparaître la barre de défilement ListView apparaissent différemment
Par exemple, si vous utilisez un GridView et vous voulez que la barre de défilement horizontale à convertir en boutons situés à gauche et à droite de votre point de vue, vous pouvez le style de cette façon:
<Style x:Key="{x:Static GridView.GridViewScrollViewerStyleKey}" TargetType="{x:Type ScrollViewer}">
<Setter Property="Focusable" Value="false"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ScrollViewer}">
<DockPanel Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
<RepeatButton DockPanel.Dock="Left"
Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
Command="{x:Static ScrollBar.LineLeftCommand}"
Content="{StaticResource ScrollLeftArrow}"/>
<RepeatButton DockPanel.Dock="Right"
Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
Command="{x:Static ScrollBar.LineRightCommand}"
Content="{StaticResource ScrollRightArrow}"/>
<ScrollBar DockPanel.Dock="Right"
Name="PART_VerticalScrollBar"
Orientation="Vertical"
Minimum="0.0"
Maximum="{TemplateBinding ScrollableHeight}"
ViewportSize="{TemplateBinding ViewportHeight}"
Value="{Binding Path=VerticalOffset,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}"
Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
Cursor="Arrow"/>
<ScrollBar DockPanel.Dock="Bottom"
Name="PART_HorizontalScrollBar"
Visibility="Hidden"
Orientation="Horizontal" />
<DockPanel Margin="{TemplateBinding Padding}">
<ScrollViewer DockPanel.Dock="Top"
HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Hidden"
Focusable="false">
<GridViewHeaderRowPresenter Margin="2,0,2,0"
Columns="{Binding Path=TemplatedParent.View.Columns,RelativeSource={RelativeSource TemplatedParent}}"
ColumnHeaderContainerStyle="{Binding Path=TemplatedParent.View.ColumnHeaderContainerStyle,RelativeSource={RelativeSource TemplatedParent}}"
ColumnHeaderTemplate="{Binding Path=TemplatedParent.View.ColumnHeaderTemplate,RelativeSource={RelativeSource TemplatedParent}}"
ColumnHeaderTemplateSelector="{Binding Path=TemplatedParent.View.ColumnHeaderTemplateSelector,RelativeSource={RelativeSource TemplatedParent}}"
AllowsColumnReorder="{Binding Path=TemplatedParent.View.AllowsColumnReorder,RelativeSource={RelativeSource TemplatedParent}}"
ColumnHeaderContextMenu="{Binding Path=TemplatedParent.View.ColumnHeaderContextMenu,RelativeSource={RelativeSource TemplatedParent}}"
ColumnHeaderToolTip="{Binding Path=TemplatedParent.View.ColumnHeaderToolTip,RelativeSource={RelativeSource TemplatedParent}}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</ScrollViewer>
<ScrollContentPresenter Name="PART_ScrollContentPresenter"
KeyboardNavigation.DirectionalNavigation="Local"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
CanContentScroll="{TemplateBinding CanContentScroll}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</DockPanel>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Ce que cela fait est modifier le modèle ScrollViewer utilisé dans GridView se composent de:
- Deux boutons de répétition, accosté aux côtés gauche et droit et utilisé pour défiler vers la gauche et à droite
- Une barre de défilement vertical en cas défilement vertical est nécessaire
- Une barre de défilement horizontale cachée pour satisfaire ScrollViewer (il dépend d'un scrollbar réellement existant), et
- Le contenu GridView normale composé de l'en-tête et les données
techniques similaires applicables à ListBox, etc., à l'exception du Le modèle ScrollViewer est plus simple car il n'a pas besoin de traiter les lignes d'en-tête.
Si vous expliquez la disposition exacte que vous voulez lorsque le défilement est activé (une image serait bien), je peux vous donner une meilleure réponse. Cela pourrait aussi aider à voir votre XAML existant.
J'ai mal lu la question. Votre réponse est bien meilleure que la mienne. Merci. – Zamboni