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.
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 ListBoxItem
s é 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