我正在使用“向上滚动”和“向下滚动”按钮替换列表视图的滚动条。我的问题是,有没有办法只在滚动列表框时显示按钮?
即。我的列表框可能只有几个项目......在这种情况下,我不需要显示按钮,因为没有什么可以滚动到。
我在多个列表框中实现这一点,并且没有设置大小的项目/ lisboxes。我希望有一些事件可以像“scrollviewer_initializeed”或其他东西一样挂钩。
答案 0 :(得分:0)
最简单的解决方案是自定义样式滚动查看器:
只需将垂直滚动条的可见性设置为“自动”,并隐藏控件模板的所有部分,除了顶部和底部的“RepeatButton”部分。
设置scrollViewer样式的示例是here,但我确信您可以通过快速搜索找到更好的样式。
答案 1 :(得分:0)
将ListBox.ScrollView.VerticalScrollBarVisibility设置为Hidden并处理ListBox.ScrollView.ScrollChanged事件,如下所示:
<ListBox ScrollViewer.ScrollChanged="ListBox_ScrollChanged"
ScrollViewer.VerticalScrollBarVisibility="Hidden" />
然后添加此方法来处理ScrollChanged事件:
private void ListBox_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
ButtonScrollUp.Visibility = ButtonScrollDown.Visibility =
((ScrollViewer)e.OriginalSource).ScrollableHeight > 0
? Visibility.Visible
: Visibility.Collapsed;
}
这假设您的按钮名为ButtonScrollUp和ButtonScrollDown。
ScrollViewer.ScrollableHeight将等于视图之外的项目数,因此如果它大于0,则应该可以看到按钮。