WPF列表框向下滚动

时间:2009-03-16 11:51:59

标签: wpf scrollbar

让我们说我有一个包含很多项目的列表框,以便显示垂直滚动,但我隐藏了滚动条

ScrollViewer.VerticalScrollBarVisibility="Hidden"

有什么方法可以添加一个向下滚动的按钮吗? iv试图添加

Command="ScrollBar.LineDownCommand" 

到按钮但没有任何效果。

2 个答案:

答案 0 :(得分:4)

您需要告诉WPF从哪里开始寻找命令处理程序。如果不告诉它,它将从Button开始查找并找不到处理LineDownCommand的任何内容。不幸的是,将其设置为ListBox是不够的,因为ScrollViewer 内部 ListBox作为其模板的一部分,因此WPF仍然无法找到它

将其设置为ListBoxItem之一是naff,但有效:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <ListBox x:Name="_listBox" ScrollViewer.VerticalScrollBarVisibility="Hidden">
            <ListBoxItem x:Name="_listBoxItem">One</ListBoxItem>
            <ListBoxItem>Two</ListBoxItem>
            <ListBoxItem>Three</ListBoxItem>
            <ListBoxItem>One</ListBoxItem>
            <ListBoxItem>Two</ListBoxItem>
            <ListBoxItem>Three</ListBoxItem>
            <ListBoxItem>One</ListBoxItem>
            <ListBoxItem>Two</ListBoxItem>
            <ListBoxItem>Three</ListBoxItem>
            <ListBoxItem>One</ListBoxItem>
            <ListBoxItem>Two</ListBoxItem>
            <ListBoxItem>Three</ListBoxItem>
        </ListBox>
        <Button Grid.Row="1" Command="ScrollBar.LineDownCommand" CommandTarget="{Binding ElementName=_listBoxItem}">Scroll Down</Button>
    </Grid>
</Window>

更好的方法是重新模板ListBox并将Button粘贴到模板中,或者在代码隐藏中连接CommandTarget

答案 1 :(得分:0)

我有一个应用程序,我想手动控制ScrollViewer的滚动。基本上,我得到了ScrollViewer的引用,然后使用ScrollToHorizo​​ntalOffset()方法来控制滚动。以下是我在解释我使用过程的博客文章:

http://www.developingfor.net/wpf/fun-with-the-wpf-scrollviewer.html

http://www.developingfor.net/wpf/more-fun-with-wpf-scrollviewer.html