#c# #xaml #xamarin.forms #observablecollection
#c# #xaml #xamarin.forms #observablecollection
Вопрос:
У меня есть сетка с некоторыми строками и столбцами в коде xaml. в коде c # у меня есть список, и я хотел бы, чтобы каждый объект, содержащийся в нем, располагался в определенной точке сетки. Например: объект 1: столбец 1 строка 1, объект 2: столбец 2 строка 1 и т.д. и т.п. Как я мог сделать?
<Grid Margin="15">
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="50"/>
<RowDefinition Height="2"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
</Grid>
Список с некоторыми объектами внутри
ObservableCollection<HumorDiary> listDiario = new ObservableCollection<HumorDiary>();
Элементы в списке могут отличаться, у них нет заранее определенного номера.
Для каждого элемента в списке я хотел бы создать кнопку в сетке
Ответ №1:
Grid
имеет Children
коллекцию
myGrid.Children.Add(myElement, col, row);
Ответ №2:
Вы должны использовать ItemsControl
, который состоит из четырех частей:
- Вы привязываете свою коллекцию к
ItemsSource
свойству. - Вы определяете свой шаблон элемента, который определяет, как ваш элемент модели (
HumorDiary
) отображается на экране. - Вы определяете свой шаблон панели, который определяет, как ваши элементы группируются вместе. В этом случае это будет
Grid
то, что вы определили выше. - Чтобы разместить эти объекты в вашей сетке, вы стилизуете свой шаблон элемента и привязываете свойства
Grid.Row
иGrid.Column
к свойствам, которые определяют, куда они должны быть добавлены.
Комментарии:
1. это проект Xamarin. ItemsControl недоступен
2.
ItemsControl
Для Xamarin существует множество реализаций, выберите одну и используйте ее!