Заказать элементы в ItemsControl справа налево внизу - PullRequest
1 голос
/ 29 мая 2019

Я пытаюсь установить список в ItemsControl в одном из представлений моего приложения WPF.

Проблема в том, что мне нужен другой порядок моих элементов, отображаемых в элементе управления.В Prmiary ItemsControl отображает элементы слева направо и сверху вниз:

1  2  3  4   5   6
7  8  9  10  11  12

Тем не менее, я хочу отображать свои элементы другим способом - справа вверху слева внизу, например:

11  9   7  5  3  1
12  10  8  6  4  2

Мой текущий ItemsControl:

        Grid.Column="1"
        BorderThickness="1"
        BorderBrush="{DynamicResource WindowTitleColorBrush}">
    <ItemsControl ItemsSource="{Binding Truck.Containers}">
         <ItemsControl.ItemsPanel>
              <ItemsPanelTemplate>
                  <UniformGrid Rows="2" />
              </ItemsPanelTemplate>
          </ItemsControl.ItemsPanel>
    </ItemsControl>
</Border>

Я не могу просто переупорядочить свой список, опустившись в модель представления, так как он будет начинаться с 12 и заканчивается 1, а не 11 - 2. Есть ли другойспособ отображения моего списка в нужном мне порядке?

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Просто предложение сделать это в коде: разделить ваш список на четные или нечетные, упорядочить эти два списка по убыванию, а затем добавить элементы из двух предыдущих списков в третий список, привязанный к вашему ItemsControl!

0 голосов
/ 29 мая 2019

Я думаю, что вы можете выбрать одно из 3 решений:

  1. Заказывайте товары по своему усмотрению в View Model

  2. Используйте CollectionViewSource- сделайте свой заказ там

  3. Создайте заказ Panel, который упорядочивает элементы, как вы хотите, и используйте его как ItemsPanelTemplate.Чтобы создать пользовательскую панель, создайте пользовательский класс и наследуйте от Panel или UniformGrid.Чем переопределить два метода:

MeasureOverride - определить необходимый размер панели в соответствии с желаемым размером дочерних элементов и доступным пространством.

ArrangeOverride - расположить элементы в окончательно доступном пространстве.Окончательный размер может быть меньше запрашиваемого.

Подробнее о пользовательских панелях см. В этом сообщении MSDN и в этом руководстве .

You.можно также взглянуть на исходный код UniformGrid на MSDN .

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