2010-08-16 37 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

相關問題