Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Анимационная прокрутка ScrollViewer 
:(
    Опции темы
Casy84
Дата 7.2.2016, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.1.2010

Репутация: нет
Всего: нет



Добрый день! 

Есть такая проблема, самому решить не получается. В общем, есть пользовательский контрол, у которого по бокам две кнопки, а между ними StackPanel, заключенная в ScrollViewer, в которой располагаются нужные элементы. 

Задача - при нажатии на кнопки влево или вправо проматывать содержимое. И делать это плавно, а не просто увеличив значение отступа у ScrollViewer. Пробовал несколько способов: 
1. Вызывал ScrollToHorizontalOffset по таймеру со сдвигом на несколько пикселей. Но тут анимация получается медленная. Хотя на DispatcherTimer ставил интервалы по 10 тиков, скорости это не прибавляло.
2. Пробовал сделать анимацию Storyboard. На свойство HorizontalOffset у ScrollViewer, но вылетает исключение, что анимацию на это свойство вешать нельзя. 
3. Пробовал играть через анимацию с Margin у StackPanel. В принципе нужного эффекта я добился. Анимация и быстрая и плавная. Но по моему это уже костыли, и должен быть более адекватный способ.

XAML выглядит так: 
Код

    <Grid VerticalAlignment="Center" Height="173" Width="980">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="36"/>
            <ColumnDefinition/>
            <ColumnDefinition Width="36"/>
        </Grid.ColumnDefinitions>
        <Button Grid.Column="0" Name="btTestPanelLeft" Content="<-" Height="47" Width="17" Cursor="Hand" Focusable="False" Click="btTestPanelLeft_Click" />
        <ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Hidden" Name="testScroll" HorizontalScrollBarVisibility="Hidden">
            <StackPanel Orientation="Horizontal" Name="testContainer">
                <Button Name="button1" Width="220" Height="170" Margin="0,0,25,0" Content="..." />
                <Button Name="button2" Width="220" Height="170" Margin="0,0,25,0" Content="..." />
                <Button Name="button3" Width="220" Height="170" Margin="0,0,25,0" Content="..." />
                <Button Name="button4" Width="220" Height="170" Margin="0,0,25,0" Content="..." />
                <Button Name="button5" Width="220" Height="170" Margin="0,0,25,0" Content="..." />
                <Button Name="button6" Width="220" Height="170" Margin="0,0,25,0" Content="..." />
            </StackPanel>
        </ScrollViewer>
        <Button Grid.Column="2" Name="btTestPanelRight" Content="->" Height="47" Width="17" Cursor="Hand" Focusable="False" Click="btTestPanelRight_Click" />
    </Grid>


Есть у кого-нибудь идеи, что можно сделать в моей ситуации? Я в WPF не очень опытен, может я просто начал копать не в ту сторону? 

Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0895 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.