WPF ListBox с прокруткой и видимостью кнопок - PullRequest
0 голосов
/ 03 апреля 2012

Я заменяю полосу прокрутки для представления списка кнопками «прокрутка вверх» и «прокрутка вниз». У меня вопрос, есть ли способ показать кнопки только тогда, когда список можно прокрутить?

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

Я внедряю это в несколько списков, и размер элементов / списков не установлен. Я надеюсь, что есть какое-то событие, к которому я могу подключиться, например, scrollviewer_initializeed или что-то в этом роде.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

Установите для ListBox.ScrollView.VerticalScrollBarVisibility значение Hidden и обработайте событие ListBox.ScrollView.ScrollChanged следующим образом:

<ListBox ScrollViewer.ScrollChanged="ListBox_ScrollChanged"
         ScrollViewer.VerticalScrollBarVisibility="Hidden" />

А затем добавьте этот метод для обработки события ScrollChanged:

private void ListBox_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
    ButtonScrollUp.Visibility = ButtonScrollDown.Visibility = 
        ((ScrollViewer)e.OriginalSource).ScrollableHeight > 0 
            ? Visibility.Visible 
            : Visibility.Collapsed;
}

Предполагается, что ваши кнопки называются ButtonScrollUp и ButtonScrollDown.

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

0 голосов
/ 03 апреля 2012

Самым простым решением было бы настроить стиль прокрутки:

Просто установите видимость вертикальной полосы прокрутки на «Авто» и скройте все части шаблона элемента управления, кроме верхней и нижней частей «RepeatButton».

enter image description here

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

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