此問題與another SO question of mine非常相關,但這一個更具體。請隨時前往其他問題了解更多詳情,但我應該在此提供您需要的一切。如果使用綁定/轉換器,ComputedVerticalScrollBarVisibility觸發器不起作用
我實現了一個自定義樣式,以我的列表視圖,這樣我可以訪問使用以下(我刪除了一些心不是相關的雜項的)
<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
不正確觸發?
UPDATE
所以,我注意到,這個準系統版本是工作(沒有使用綁定和轉換器),所以我刪除了從我的代碼,並取得了觸發器簡單地更新背景顏色。而且,它的工作原理,爲什麼添加一個綁定/轉換器搞亂了觸發器?