【发布时间】:2012-07-12 16:34:51
【问题描述】:
我使用的是star converter to have relative sized listview columns,但我目前的问题是这没有考虑滚动条是否可见。我尝试在代码中添加如下内容:
var scroll = FindVisualChild<ScrollViewer>(listView);
var offset = 0.0;
if (scroll.ComputedVerticalScrollBarVisibility == Visibility.Visible)
offset = SystemParameters.ScrollWidth + 5;
但是,大小是在滚动条可见性之前完成的,并且滚动始终显示为Collapsed。
所以,我的问题是,如何适当调整列的大小。我试图在ScrollViewer.ComputedVerticalScrollBarVisibility 上添加一个触发器,但在那里没有任何成功。我尝试使用custom code based off of this link,但目前总是以空白列表视图结束(可能是由于列表视图使用了 ItemsPresenter,但我目前不确定)。
这是我尝试过的列表视图设置:
<Style x:Key="{x:Type ListView}" TargetType="ListView">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListView">
<Border Name="Border" BorderThickness="0" BorderBrush="#999999" >
<ScrollViewer x:Name="blah" >
<ItemsPresenter />
</ScrollViewer>
</Border>
<ControlTemplate.Triggers>
<Trigger SourceName="blah" Property="ComputedVerticalScrollBarVisibility" Value="Hidden">
<Setter Property="BorderBrush" Value="Aqua"/>
<Setter Property="BorderThickness" Value="10"/>
</Trigger>
<Trigger SourceName="blah" Property="ComputedVerticalScrollBarVisibility" Value="Collapsed">
<Setter Property="BorderBrush" Value="Orange"/>
<Setter Property="BorderThickness" Value="10"/>
</Trigger>
<Trigger SourceName="blah" Property="ComputedVerticalScrollBarVisibility" Value="Visible">
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="BorderThickness" Value="10"/>
</Trigger>
<Trigger Property="IsGrouping" Value="true">
<Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="Border" Property="Background" Value="#BBBBBB"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
setter 只是看看它是否有效......但它们根本没有设置
【问题讨论】: