2
根據this thread末尾的帖子,您可以用ContentPresenter
替換ListBox
的ScrollViewer
,以禁用嵌套場景中的滾動。如何用ListBox上的ContentPresenter替換ScrollViewer?
但是,我不知道如何更換ScrollViewer
。我必須重新創建模板嗎?
根據this thread末尾的帖子,您可以用ContentPresenter
替換ListBox
的ScrollViewer
,以禁用嵌套場景中的滾動。如何用ListBox上的ContentPresenter替換ScrollViewer?
但是,我不知道如何更換ScrollViewer
。我必須重新創建模板嗎?
是的,您需要指定自己的模板,但您將使用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>
很好用。謝謝! – 2010-08-17 01:16:43