【发布时间】:2012-07-12 21:25:15
【问题描述】:
这个问题与another SO question of mine 非常相关,但这个问题更具体。请随意前往其他问题了解更多详细信息,但我应该在此处提供您需要的一切。
我已经为我的列表视图实现了一个自定义样式,以便我可以使用以下内容访问滚动条属性(我删除了一些不相关的杂项)
<Style x:Key="{x:Static GridView.GridViewScrollViewerStyleKey}" TargetType="ScrollViewer">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ScrollViewer">
<Grid Background="{TemplateBinding Background}">
<DockPanel Margin="{TemplateBinding Padding}">
<ScrollViewer DockPanel.Dock="Top" Focusable="false">
</DockPanel>
<ScrollBar Name="PART_HorizontalScrollBar" Orientation="Horizontal" Grid.Row="1" Maximum="{TemplateBinding ScrollableWidth}" ViewportSize="{TemplateBinding ViewportWidth}" Value="{TemplateBinding HorizontalOffset}" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/>
<ScrollBar Name="PART_VerticalScrollBar" Grid.Column="1" Margin="20,0" Maximum="{TemplateBinding ScrollableHeight}" ViewportSize="{TemplateBinding ViewportHeight}" Value="{TemplateBinding VerticalOffset}" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="ComputedVerticalScrollBarVisibility" Value="Collapsed">
<Setter Property="Width">
<Setter.Value>
<Binding
ConverterParameter="400"
RelativeSource="{RelativeSource FindAncestor,AncestorType={x:Type ListView}}"
>
<Binding.Converter>
<Converters:ListViewColumnResizeConverter/>
</Binding.Converter>
</Binding>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="ComputedVerticalScrollBarVisibility" Value="Visible">
<Setter Property="Width">
<Setter.Value>
<Binding
ConverterParameter="500"
RelativeSource="{RelativeSource FindAncestor,AncestorType={x:Type ListView}}"
>
<Binding.Converter>
<Converters:ListViewColumnResizeConverter/>
</Binding.Converter>
</Binding>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
注意我有两个触发器,一个用于Visible,一个用于Collapsed。当我运行我的应用程序时,无论如何我都会得到一个Visible,然后是一个Collapsed。我什至用计时器延迟加载我的数据并且没有触发Visible。 是我遗漏了什么,还是 Dependency Property 未正确触发的错误?
更新
所以,我注意到它的准系统版本正在工作(不使用绑定和转换器),所以我从我的代码中删除了它并让触发器简单地更新背景颜色。而且,它有效,那么为什么添加绑定/转换器会弄乱触发器?
【问题讨论】: