|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
Всем привет, посоветуйте пожалуйста, как лучше поступить. Есть ItemsControl, в котором при ситуации когда нельзя отобразить все элементы на экране, нужно формировать новую "порцию" элементов и показывать их по очереди с таймером, так чтобы они все влезли на экран. Высота каждого элемента ItemsControl может быть разной. Что сделал: обернул itemscontrol в ScrollViewer и сравниваю ViewportHeight от ScrollViewer и ActualHeight от ItemsControl, когда разница между ними появляется, соответственно элемент не влез и будет показан не полностью без прокрутки ScrollViewer. Вопрос: при "поштучном" добавлении элементов в ViewModel для ItemsControl.itemsource, можно ли узнать, что добавление этого элемента приведет к включению скролла и он не влезет в Viewport. Гугл говорит, что можно это узнать только по факту после рендеринга, то есть нужно сначала добавить, прорисовать, получить размер, и если не хватает высоты, то удаляем элемент. Хотелось бы избежать такой стратегии добавлении. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 08:50 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_subнужно формировать новую "порцию" элементов и показывать их по очереди с таймером, так чтобы они все влезли на экран.если не влезает, в верстке сдвиг и скроллинг по умолчанию. Т.е. если я повернул экран на 90 град будут папап окна мелькать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 09:06 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_subнужно формировать новую "порцию" элементов и показывать их по очереди с таймером, так чтобы они все влезли на экран.если не влезает, в верстке сдвиг и скроллинг по умолчанию. Т.е. если я повернул экран на 90 град будут папап окна мелькать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 09:07 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
Petro123, папап меню никаких нет, задача показать ровно столько элементов, которые влезут без скролла, т.к. у пользователя не будет возможности скроллировать, а просмотреть все элементы нужно То есть, если например при обычной ориентации влезает 5 элементов, разворачиваем на 90 экран делается выше и соответственно влезет больше элементов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 09:41 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_sub, И экран размер может быть любой? Иначе просто верстка для определенного экрана с поворотом туда сюда. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 10:00 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
Petro123, экран фиксированный. В принципе от размера экрана не должно зависеть- есть же ActualHeight и ViewportHeight, нужно их просто мониторить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 10:01 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_subнужно их просто мониторить.нет. Если фиксированный, то просто выбрать правильную верстку. Чтобы контекст перетекал из горизонтали в вертикаль. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 10:04 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
Petro123, вертикали тоже не хватит. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 10:08 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
Если Вы про что-то вроде wrap панели. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 10:08 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_subPetro123, вертикали тоже не хватит.тогда в Layouts контроле делаешь все остальные заранее мультимедиа прыгающие. Какие не влазят покажет IDE прямо счас. Вычислять не надо. Надо дизайн формы делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 10:10 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_subЕсли Вы про что-то вроде wrap панели.в андроид студии есть кнопка Повернуть экран. И все видно сразу. Тут не подскажу. Жди профи. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 10:12 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
Petro123, что-то я все равно не могу понять, как я их заранее разобью все элементы, не знаю сколько они будут места занимать. То есть у меня например максимум на всем экране (горизонталь+ вертикаль- все заполнено) в ItemControl'e поместится например 10 элементов. Если их размер будет другой поместится максимум 5. А нужно показать 100 и без скроллинга- то есть нужно или делать меньше все элементы или автопрокрутку - но это то еще удовольствие. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 10:23 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_subне знаю сколько они будут места занимать. Открой xaml и слева внизу поставь 100% Виден реальный размер. Включи свойства Контрол-layout там цифры. ? Т.е. ты заранее видишь что не влазит. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 10:34 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_subЕсли их размер будет другойу каждого контрола есть свой layout. Поставь там вписать. И дай скрины что за 100 элементов? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 10:39 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_subА нужно показать 100 и без скроллинга-а миллион без скроллинга? Предел есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 10:41 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_sub, Даю решение по дизайну. Ставим полосу из точек 3х3пикселя на 100 контролов. При MouseMove над точкой показываем сам контрол. Всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 10:44 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_subЕсть ItemsControl, в котором при ситуации когда нельзя отобразить все элементы на экране, нужно формировать новую "порцию" элементов и показывать их по очереди с таймером, так чтобы они все влезли на экран. Высота каждого элемента ItemsControl может быть разной.Я не очень понял задачу. Допустим есть 15 элементов и есть некий размер области, в которой поместится 5, затем 3, затем 7 элементов. Ты хочешь сделать, чтобы каждую секунду эти группы элементов менялись на следующую, так? Тогда не очень понимаю, причем тут ItemsControl, тут на первый взгляд больше задача для кастомной панели, или же я неверно понимаю, что требуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 11:03 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
Petro123, В Window один элемент Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120.
ввиду того, что Код: xml 1. 2. 3. 4. 5. 6.
количество элементов в ItemsControl может быть разное, родительский InfoTemplate тоже растягивается по высоте, поэтому я не могу в статике замерять его высоту. В вышеприведенном <ItemsControl Style="{StaticResource fltItemscontrolStyle}"/> может быть как 1 элемент, так и >1. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 11:07 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_sub, Сначала задачу понять надо. 1. Что за элемент с непредсказуемым контентом который надо вписать? 2. Используй вписать вместо заполнить всё доступное. 3. Моё ТЗ с превью контролов маленькими подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 11:21 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
Shocker.Provb_subЕсть ItemsControl, в котором при ситуации когда нельзя отобразить все элементы на экране, нужно формировать новую "порцию" элементов и показывать их по очереди с таймером, так чтобы они все влезли на экран. Высота каждого элемента ItemsControl может быть разной.Я не очень понял задачу. Допустим есть 15 элементов и есть некий размер области, в которой поместится 5, затем 3, затем 7 элементов. Ты хочешь сделать, чтобы каждую секунду эти группы элементов менялись на следующую, так? Тогда не очень понимаю, причем тут ItemsControl, тут на первый взгляд больше задача для кастомной панели, или же я неверно понимаю, что требуется.vb_subможно это узнать только по факту после рендеринга, то есть нужно сначала добавить, прорисовать, получить размер, и если не хватает высоты, то удаляем элемент.Как раз-таки в варианте с панелью нам не нужно ничего прорисовывать, чтобы узнать размер элемента, для этого существует "измерение" ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 12:07 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
Shocker.ProКак раз-таки в варианте с панелью нам не нужно ничего прорисовывать, чтобы узнать размер элемента, для этого существует "измерение"И панель как раз-таки можно встроить ItemsControl.ItemsPanelTemplate, чтобы получить доступ к прибайнденным элементам ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 12:33 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
Petro123, 1)немного акварели ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 12:42 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
Petro123, 2) если вписывать, то прийдется как я понимаю зумить размеры в меньшую сторону. 3) пока еще не успел проработать На картинке в экран помещается 5 элементов, а показать например нужно 100 (это все условно для примера- не в количестве дело), причем высота каждого разная - в зависимости от количества элементов внутреннего ItemsControl- как видно из картинки может быть 1,2,3,4,5- соответственно высота каждого элемента- разная. Я хочу проработать следующую ситуацию-во внешний itemsScontrol (ItemsControlStyleMainViewFirst) загружено 4 элемента, я хочу проверить - влезет ли 5-й элемент в этот же экран, если не влезет то разбиваю всю коллекцию элементов на 2 части и показываю их по очереди с таймером. На картинке в данном случае 5-й элемент(Ник**ин) поместился на экран, но если бы в 5-м элементе во внутреннем itemsScontrol (fltItemscontrolStyle) было бы не 4 элемента, а 5, то весь 5-й элемент бы не поместился и соответственно его нужно переносить в следующую порцию. Вот я хочу детектировать во ViewModel это событие, когда следующий элемент не поместится на экран. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 12:55 |
|
Предугадать размер контрола до рендеринга
|
|||
---|---|---|---|
#18+
vb_sub, Остальные 95 по таймеру хочешь мельтешить на экране? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2018, 12:58 |
|
|
start [/forum/topic.php?fid=21&fpage=6&tid=1440436]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 199ms |
0 / 0 |