gpt4 book ai didi

c# - ComputedVerticalScrollBarVisibility 触发器在使用绑定(bind)/转换器时不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:20 25 4
gpt4 key购买 nike

这个问题与 another SO question of mine 非常相关,但这个问题更具体。请随时前往其他问题了解更多详细信息,但我应该在此处提供您需要的一切。

我已经为我的 ListView 实现了一个自定义样式,这样我就可以使用以下方法访问滚动条属性(我删除了一些不相关的杂项)

<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 未正确触发的错误?

更新

所以,我注意到它的一个准系统版本正在运行(不使用绑定(bind)和转换器),所以我从我的代码中删除了它并让触发器简单地更新背景颜色。而且,它有效,那么为什么添加绑定(bind)/转换器会弄乱触发器?

最佳答案

好吧,答案肯定对我没有帮助,但绑定(bind)的值似乎已缓存。由于我的代码隐藏转换器更像是一种获取对 Computed 触发器的代码访问的 hack,所以我什至没有使用返回值。但是,我继续将唯一的颜色值绑定(bind)到每个触发器,一旦滚动条可见,我的代码就不会再次被点击,但使用了初始调用的返回值。我必须承认,这对 MS 团队来说相当聪明,但对我来说却是一个绊脚石。如果用户具有可用于每个触发器的时间相关值怎么办?

关于c# - ComputedVerticalScrollBarVisibility 触发器在使用绑定(bind)/转换器时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11460928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com