Вставка объектов внутри сетки из c#

#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 существует множество реализаций, выберите одну и используйте ее!