none
Прокрутка ScroolViewer ниже нижнего Item-а RRS feed

  • Вопрос

  • Добрый день.

    WPF C# можно ли прокрутить ScroolViewer принудительно дальше нижнего Item.

    ScroolViewer в нём StackPanel в нём 3 Grid

    По вертикали в ScroolViewer может войти 10 Grid. Т.е. даже вертикальных полосок нет

    Можно ли прокрутить программно ScroolViewer так чтобы третий Grid "уехал" вверх и скрылся наверху.

    Спасибо


    • Изменено DevingAs 19 августа 2016 г. 6:16
    19 августа 2016 г. 6:16

Ответы

  • Основное свойство прокрутки, как я это понимаю: Прокрутка должна появляться и работать только в том случае, если контент превышает рабочую область. Если область контента меньше выделенного под него места, то и смысла двигать контент не имеет смысла.

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

    • Помечено в качестве ответа DevingAs 20 августа 2016 г. 20:17
    20 августа 2016 г. 6:56
  • Стандартным способом никак. ScrollViewer так устроен, что его внутреннее пространство участвует в расчетах прокрутки и эти расчеты важны для самых разных механизмов, вроде логической прокрутки.

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

    Вам нужно задуматься стоит ли реализация данного функционала таких усилий?


    VB.Net - WPF, UWP

    • Помечено в качестве ответа DevingAs 20 августа 2016 г. 20:17
    20 августа 2016 г. 7:01
    Отвечающий
  • Добрый день!

    Самый простой вариант задать нижнему гриду Margin по нижней границе, равный сумме высот гридов. Примерно так, вместо "100" - Ваше значение:

    <Grid Margin="0,0,0,100">
        <!-- -->
    </Grid>
     


    • Изменено Pavel Dorovsky 20 августа 2016 г. 7:12
    • Помечено в качестве ответа DevingAs 20 августа 2016 г. 20:17
    20 августа 2016 г. 7:11

Все ответы

  • Простите, я правильно понимаю, что есть область в которой расположен ScrollViewer в нем StackPanel с вертикальной ориентацией, в ней 3 объекта Grid с высотой которая выделенную область заполняет приблизительно на 30%. И вы хотите принудительно увеличивать незаполненное пространство, для чего?
    19 августа 2016 г. 14:23
  • Добрый день.

    Наоборот я не хочу заполнять пустыми Item

    Должно получиться как на правом рисунке. Т.е. промотал вниз и все 3 Grid уехали вверх.

    20 августа 2016 г. 3:58
  • Основное свойство прокрутки, как я это понимаю: Прокрутка должна появляться и работать только в том случае, если контент превышает рабочую область. Если область контента меньше выделенного под него места, то и смысла двигать контент не имеет смысла.

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

    • Помечено в качестве ответа DevingAs 20 августа 2016 г. 20:17
    20 августа 2016 г. 6:56
  • Стандартным способом никак. ScrollViewer так устроен, что его внутреннее пространство участвует в расчетах прокрутки и эти расчеты важны для самых разных механизмов, вроде логической прокрутки.

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

    Вам нужно задуматься стоит ли реализация данного функционала таких усилий?


    VB.Net - WPF, UWP

    • Помечено в качестве ответа DevingAs 20 августа 2016 г. 20:17
    20 августа 2016 г. 7:01
    Отвечающий
  • Добрый день!

    Самый простой вариант задать нижнему гриду Margin по нижней границе, равный сумме высот гридов. Примерно так, вместо "100" - Ваше значение:

    <Grid Margin="0,0,0,100">
        <!-- -->
    </Grid>
     


    • Изменено Pavel Dorovsky 20 августа 2016 г. 7:12
    • Помечено в качестве ответа DevingAs 20 августа 2016 г. 20:17
    20 августа 2016 г. 7:11