Кнопки горизонтальной прокрутки в WPF - PullRequest
2 голосов
/ 30 июня 2011

У меня есть горизонтальная панель стека, содержащая кнопки.

Мне нужно иметь возможность прокручивать это вправо или влево, чтобы кнопки вращались через панель стека, потому что на экране больше кнопок, чем места.

Использование горизонтальной полосы прокрутки не вариант, потому что он портит внешний вид приложения и не вращается по кругу.

  • Как можно изменить полосу прокрутки так, чтобы стрелка вправо находилась справа, а стрелка влево - слева, чтобы управлять прокруткой и не полностью вращать все кнопки. т.е. работает как обычная полоса прокрутки, но выглядит намного лучше. например. << [Btn] [Btn] [Btn] >>

  • Или используйте способ или вращайте кнопки по кругу, чтобы не было реального начала или конца горизонтального набора кнопок и каким-то образом пользователь мог изменить положение кнопок, которые он видит.

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

Мой выбор - Xmal и стилизация, но нет проблем с использованием кода.

Ответы [ 2 ]

0 голосов
/ 30 июня 2011

Создание собственных кнопок прокрутки - проблема? Если нет, вы можете создать ItemsControl, в стиле установите для ItemsPanel значение

    <ItemsPanelTemplate x:Key="ItemsPanelStyle">
        <StackPanel Orientation="Horizontal"></StackPanel>
     </ItemsPanelTemplate>

и в ControlTemplate ItemsControl

<ScrollViewer
    x:Name="PART_ScrollViewer"
    HorizontalScrollBarVisibility="Hidden"
    VerticalScrollBarVisibility="Hidden"
    CanContentScroll="True"
    >
        <ItemsPresenter/>
    </ScrollViewer>

ваши кнопки панели инструментов будут фактическим ItemsSource этого ItemsControl. Если вы сейчас создаете кнопку в шаблоне (прокрутка вправо, нужная кнопка прокрутки) и по ее команде вы выполняете

ScrollViewer myViewer = GetTemplatedPart("PART_ScrollViewer");
if(myViewer != null)
{
    myViewer.LineRight();
}

это должно прокрутить каждый элемент вправо до конца списка кнопок (обратите внимание на преимущество: независимо от ширины элемента). То же самое вы можете сделать слева.

HTH, Даниэль

0 голосов
/ 30 июня 2011

Я задал похожий вопрос в [здесь] [1], надеюсь, это поможет.

[1]: Пользовательский список с кнопками перемещения вперед / назад

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...