2010-08-16 12 views

Répondre

3

Oui, vous devrez affecter votre propre modèle, mais vous utiliserez un ItemsPresenter, et non ContentPresenter. Le modèle par défaut pour ListBox inclut un ScrollViewer enroulé autour de son ItemsPresenter. En faisant une copie du modèle, vous pouvez simplement supprimer le ScrollViewer et laisser le reste du modèle (et le comportement) intact. Ceci est le modèle par défaut sans le ScrollViewer (vous pouvez également supprimer le Trigger IsGrouping si vous le souhaitez):

<ControlTemplate TargetType="{x:Type ListBox}"> 
    <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="1" SnapsToDevicePixels="true"> 
     <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
    </Border> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsEnabled" Value="false"> 
      <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> 
     </Trigger> 
     <Trigger Property="IsGrouping" Value="true"> 
      <Setter Property="ScrollViewer.CanContentScroll" Value="false"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 
+0

Fonctionne bien. Merci! –