Как получить высоту элемента после того, как он был создан?

1

Я хочу заполнить ListView элементами, если они соответствуют текущей странице, поэтому мне не нужно прокручивать. Для этого я хочу добавить элемент, проверить его высоту и, если он слишком большой, чтобы вписаться в оставшееся пространство, я хочу его удалить.

Мои вопросы:

  1. Есть ли более разумный способ решить эту проблему?
  2. Когда проверять высоту реализованных предметов?

В Windows 8.1 элемент управления ListView не имеет ItemRealized или ItemCreated. Итак, когда нужно проверить размер контейнера?

Я пытаюсь получить размер через

UIElement container = (UIElement)ItemsListView.ContainerFromItem(obj);
double height = container.DesiredSize.Height;

Спасибо за вашу помощь!

  • 0
    Является ли намерение, что вы хотите в основном хотеть разбитую на страницы коллекцию (например, 100 элементов, отображать 10 элементов на странице при 10 страницах), или вам явно нужен только один ListView?
  • 0
    Вы правы, цель состоит в том, чтобы реализовать пейджинг. Но мои вещи могут иметь разную высоту, так что может случиться так, что на первой странице будет 3 элемента, на вторых 5 элементов и так далее ...
Показать ещё 1 комментарий
Теги:
xaml
wpf
windows-8

1 ответ

0

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

Обычно разбиение на страницы - это что-то, что должно быть сделано на ViewModel/бизнес-стороне вещей, поэтому, если вы знаете размеры объектов раньше времени, вы можете сделать что-то вроде этого. Как разбивать ObservableCollection? или подкачки и сортировка MVVM, обеспечивая представление с правильным количеством элементов.

Если это должно быть более динамичным и гибким, это довольно хорошая статья о разбиении на страницы с использованием WrapPanel в качестве WrapPanel ItemsPanel для WrapPanel ItemsControl http://imduff.blogspot.com/2008/02/this-is-way-how-i -implemented-paging.html.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню