如何在wpf中看不到滚动条时展开窗口内容?

时间:2009-09-17 12:21:17

标签: wpf scrollbar expand

我在一个ItemsControl周围有一个wpf的滚动条,只有当列表长于窗口大小时才会显示。但是,当它被隐藏时,滚动条应该是一个空白空格。

如何删除此空格并“折叠”滚动条?

<ScrollViewer VerticalScrollBarVisibility="Auto"
              HorizontalAlignment="Stretch"
              HorizontalContentAlignment="Left"
              VerticalContentAlignment="Top"
              HorizontalScrollBarVisibility="Disabled">
    <ItemsControl ItemsSource="{Binding Path=ContactGroups}"
                  Width="Auto"
                  MinWidth="231"
                  MinHeight="342"
                  ScrollViewer.VerticalScrollBarVisibility="Disabled"
                  Height="Auto" 
                  HorizontalContentAlignment="Left" 
                  VerticalContentAlignment="Top"
                  HorizontalAlignment="Stretch">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <c:ContactGroupControl />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</ScrollViewer>

3 个答案:

答案 0 :(得分:1)

当滚动条的可见性发生变化时,不会引发任何事件,但您可能会挂钩VerticalScrollBarVisibility和/或Horizo​​ntalScrollBarVisibility依赖项属性的更改通知。也许你可以使用这个小片段。

DependencyPropertyDescriptor scrollbarDesc =
    DependencyPropertyDescriptor.FromProperty
    (ScrollViewer.VerticalScrollBarVisibilityProperty, typeof(Visibility));

if (scrollbarDesc != null)
{
    scrollbarDesc.AddValueChanged(scrollViewer1, delegate
    {
        // Add your propery changed logic here...
    });
}

答案 1 :(得分:1)

Trainee4Life有这个想法,但您只需要挂钩到不同的属性[ScrollViewer.ComputedVerticalScrollBarVisibilityProperty]并将typeof(Visisbility)更改为typeof(ScrollViewer)。

DependencyPropertyDescriptor scrollbarDesc =
    DependencyPropertyDescriptor.FromProperty
    (ScrollViewer.ComputedVerticalScrollBarVisibilityProperty, typeof(ScrollViewer));

if (scrollbarDesc != null)
{
    scrollbarDesc.AddValueChanged(scrollViewer1, delegate
    {
        // Add your propery changed logic here...
    });
}

答案 2 :(得分:0)

你的问题实际上已经找到了答案。

您需要将滚动条的状态设置为Collapsed而不是Invisible

scrollbar.Visibility = Collapsed;

这将删除元素,而不是仅隐藏它并在UI中为其保留空间。