Вопрос

У меня есть список, связанный со списком простых объектов.Как мы знаем, в списке по умолчанию элементы размещены в виде панели стека, поэтому элементы располагаются таким образом

общий

Однако у меня есть некоторые условия, с помощью которых я проверяю, должен ли элемент отображаться горизонтально или вертикально, и поэтому элементы могут быть размещены таким образом

Например: -

общий

Как это сделать?

(Если вам интересно, зачем мне это вообще может понадобиться, пример сценария - «обновления в стиле facebook», где, если пользователь загружает 3–4 фотографии постоянно, они не всегда появляются в следующей строке, но могутотображаются горизонтально, тогда как если он публикует какое-то событие, оно появляется в следующей строке.)

Заранее спасибо :)

Это было полезно?

Решение

Суть решения заключается в использовании другого кода ItemsControl в коде ItemTemplate.Этот кодовый кодовый код должен иметь горизонтально ориентированный общий кодовый код в качестве своего общего кодового кода.

Вот простой пример.Начнем с очень простых тестовых данных: -

общий

Теперь мы хотим отобразить этот список в ListBox, но сохранить все имена с одинаковым первым инициалом в одной строке.Я собираюсь использовать реализацию ListBox для работы с нужной нам группировкой.Если вы используете MVVM, то вам нужна модель ViewModel.

общий

Результатом этого конвертера является, по сути, генеральный кодовый код, который нам и нужен.Внешний ListBox будет перечислять внешний набор, а внутренний ItemsControl перечислит внутренний набор строк, который будет набором имен с тем же начальным символом.

Вот xaml: -

общий

Другие советы

При использовании MVVM узор Я бы сделал что-то вроде этого:

  1. Создайте ViewModel для представления, в котором находится ваш список. Эта виртуальная машина содержит коллекцию экземпляров ListItemViewModel (см. следующий пункт)
  2. Создайте модель представления с именем ListItemViewModel (дайте ей более подходящее имя в зависимости от вашего домена). Эта модель представления содержит коллекцию экземпляров ItemViewModel (см. Следующий пункт).
  3. Создайте модель представления с именем ItemViewModel. Каждый из них поддерживает отдельный элемент в списке. Дайте ему более подходящее имя в зависимости от вашего домена.
  4. Создайте представление, содержащее ваш список. Привяжите свой список к коллекции ListItemViewModels в виртуальной машине. Шаблон элемента для этого списка будет ListItemView (см. Следующий пункт). Шаблон панели элементов будет StackPanel по умолчанию.
  5. Создайте ListItemView с контекстом данных ListItemViewModel. Это представление состоит из горизонтальной StackPanel элементов ItemView (см. Следующий пункт).
  6. Создайте ItemView, поддерживаемый ItemViewModel.

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

Как я уже сказал выше, вы определенно захотите изменить имя своих моделей представлений / представлений, мои предназначены только для демонстрационных целей :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top