2015-07-25 7 views
1

Моя цель состоит в том, чтобы создать ListView с ориентацией какXamarin.Forms настроить ListView стиль петлять

cell1 CELL2

CELL3 cell4

cell5 cell6

cell7 cell8

по умолчанию каждая ячейка принимает всю ширину списка, теперь я хочу изменить ее как зигзаг, каждая ячейка - это ячейка просмотра (каждая из которых может привязываться к элементу i n список в отдельности). Чтобы сделать это, я думаю, мне нужно найти, где listview выстраивает свою ячейку и меняет свой путь.

Есть ли идеи по этому вопросу?

+0

Вы, вероятно, ищет 'GridView', что вы говорите макет в виде двух столбцов. В любом случае, вы косвенно просите учебник, который не подходит для StackOverflow. Поэтому я отмечаю, что ваш вопрос должен быть закрыт. – Cheesebaron

ответ

0

В той же ситуации я в конечном итоге создаю пользовательский GridItemsView<T> путем расширения Grid с DataTemplate.
Вот подсказка для вас:

var columns = new ColumnDefinitionCollection(); 

    for (int i = 0; i < columnsCount; i++) 
    { 
     columns.Add(new ColumnDefinition()); 
    } 

    SetValue(ColumnDefinitionsProperty, columns); 

    int rowsCount = (itemsCount - 1)/columnsCount + 1; 

    var rows = new RowDefinitionCollection(); 

    for (int i = 0; i < rowsCount; i++) 
    { 
     rows.Add(new RowDefinition()); 
    } 

    SetValue(RowDefinitionsProperty, rows); 

И:

int col = 0; 
    int row = 0; 

    foreach (T item in items) 
    { 
     View child = (View) Template.CreateContent(); 
     child.BindingContext = item; 

     child.SetValue(Grid.RowProperty, row); 
     child.SetValue(Grid.ColumnProperty, col); 

     col++; 

     if (col == this.columnsCount) 
     { 
      col = 0; 
      row++; 
     } 

     if (index >= 0) 
     { 
      Children.Insert(index++, child); 
     } 
     else 
     { 
      Children.Add(child); 
     } 
    } 
Смежные вопросы