【问题标题】:Resize listview columns on ScrollViewer.ComputedVerticalScrollBarVisibility change调整 ScrollViewer.ComputedVerticalScrollBarVisibility 上的列表视图列的大小更改
【发布时间】: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 只是看看它是否有效......但它们根本没有设置

【问题讨论】:

    标签: c# wpf .net-3.5


    【解决方案1】:

    我最终创造了一种 hack。 Here is my initial blog post 就可以了,因为它可能会变得很长。我仍然需要清理代码,但希望它可以帮助其他人

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多