Pergunta

Vamos dizer que eu tenho uma caixa de listagem com muitos itens para que a rolagem vertical aparece, mas eu ter escondido a barra de rolagem com

ScrollViewer.VerticalScrollBarVisibility="Hidden"

Existe alguma maneira eu posso adicionar um botão que rolar para baixo para mim? iv tentei adicionar

Command="ScrollBar.LineDownCommand" 

a um botão, mas esse não tem qualquer efeito.

Foi útil?

Solução

Você precisa dizer WPF onde começar a procurar para o manipulador de comando. Sem contar a ele, ele vai começar a olhar a partir do Button e não encontrar qualquer coisa que manipula o LineDownCommand. Infelizmente, definindo-o como o ListBox não será suficiente porque o ScrollViewer é dentro o ListBox como parte de seu modelo, de modo WPF ainda não vai encontrá-lo.

Defini-lo para um dos ListBoxItems é bobo, mas funciona:

<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>

A melhor maneira de fazer isso seria a qualquer re-modelo do ListBox e furar o Button dentro do modelo, ou para conectar-se a CommandTarget no código-behind.

Outras dicas

Eu tive um aplicativo onde eu queria controlar manualmente a rolagem de um ScrollViewer. Basicamente, I é uma referência para o ScrollViewer e, em seguida, utilizado o método ScrollToHorizontalOffset () para controlar o deslocamento. Abaixo estão os posts do blog onde eu explicar o processo que eu usei:

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

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top