我很抱歉我的英语。
我需要根据垂直滚动条是否可见(或启用或禁用)来更改ListBox中项目的DataTemplate。我为列表框和滚动条使用样式。我可以改变scrollBar模板时,它的属性"IsEnabled"有值"False"。但我不明白如何捕捉滚动条。可见度改变内部列表框样式。我试着用
<Style TargetType="{x:Type ListBox}" >
.....
<Style.Triggers>
<Trigger Property="ScrollViewer.ComputedVerticalScrollBarVisibility"
Value="Hidden">
<Setter Property="ItemTemplate">
......
与… …
<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
..........
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Hidden" />
</Trigger>
......
这不是工作。
我希望你能帮助我
ScrollViewer有两个属性:ComputedHorizontalScrollBarVisibility和ComputedVerticalScrollBarVisibility是只读依赖属性,我们可以在ListBox的ControlTemplate中的触发器中使用它们(这里我只考虑垂直属性)
<Style x:Key="StyleListBoxChangingItemTemplate" TargetType="{x:Type ListBox}">
<Setter Property="ItemTemplate" Value="{StaticResource SomeItemTemplate}"/>
<Setter Property="Template">
<ControlTemplate TargetType="{x:Type ListBox}">
<ScrollViewer x:Name="ListScroller">
<ItemsPresenter />
</ScrollViewer>
<ControlTemplate.Triggers>
<Trigger SourceName="ListScroller" Property="ComputedVerticalScrollBarVisibility" Value="Visible">
<Setter Property="ItemTemplate" Value="{StaticResource SomeOtherItemTemplate}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter>
</Style>
注意:为了答案的清晰性,这是一个精简的、最基本的ListBox模板。我删除了应该环绕ScrollViewer的边框和ScrollViewer上定义的所有属性。