У меня есть следующее ListView
-
<ListView x:Name="listViewm" ItemsSource="{ Binding Rows }">
<ListView.Header >
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Text="Name" Grid.Column="3" FontSize="Medium" />
<Label Text="Age" Grid.Column="2" FontSize="Medium" />
<Label Text="DOB" Grid.Column="1" FontSize="Medium" />
</Grid>
</ListView.Header>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<!--I need my Row values here-->
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Мне нужно создать строку для каждой записи в списке и динамически добавить ее в сетку -
protected override void OnAppearing()
{
CreateGrid();
}
public ObservableCollection<Row> Rows { get; set; }
public class Row
{
public string Name { get; set; }
public string Age { get; set; }
public string DOB { get; set; }
}
public void CreateGrid()
{
Rows = new ObservableCollection<Row>();
Rows.Clear();
foreach(var entry in entryList) { // entryList just contains values I use to populate row info
var row = new Row();
row.Name = entry.name;
row.Age = entry.age;
row.DOB = entry.dob;
Rows.Add(row);
}
}
ItemSource не является обязательным, поэтому новые строки не создаются, я попытался удалить ItemsSource="{ Binding Rows }"
в XAML и использовать listViewm.ItemsSource = Rows
в коде, но это также не сработало.
Таким образом, если entryList
имеет 3 тестовых записи для Джона, Боба и Билла, таблица должна выглядеть следующим образом -
+----------------+
| Name Age DOB |
+----------------+
| John 31 06/09 |
| Bill 32 07/10 |
| Bob 34 08/11 |
+----------------+