2010-08-16 27 views

回答

3

是的,您需要指定自己的模板,但您将使用ItemsPresenter而不是ContentPresenter。 ListBox的默认模板包含一个围绕其ItemsPresenter的ScrollViewer。通过制作模板的副本,您可以删除ScrollViewer,并保留模板(和行为)的其余部分不变。这是没有ScrollViewer的默认模板(如果需要,您也可以删除IsGrouping触发器):

<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

很好用。谢谢! – 2010-08-17 01:16:43

相关问题