我有以下db.Exec("UPDATE counter_table SET counter = counter + 1 WHERE id = ?", 42)
-
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>
itemSource没有绑定,因此没有新的行被创建,我尝试在XAML中删除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);
}
}
,并在后面的代码中使用ItemsSource="{ Binding Rows }"
,但是这也没有用。
因此,如果listViewm.ItemsSource = Rows
有3个针对John,Bob和Bill的测试条目,则表应类似于-
entryList
答案 0 :(得分:2)
您没有将您的值添加到列表视图。
<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-->
<Label Text="{Binding Name}" />
<Label Grid.Column="1" Text="{Binding Age}" />
<Label Grid.Column="2" Text="{Binding DOB}" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
答案 1 :(得分:1)
我可能是错的,但是当您初始化Rows对象时,应该更新listview的itemsSource。
public void CreateGrid()
{
Rows = new ObservableCollection<Row>();
Rows.Clear();
// Rows is initialized as a new collection so update the itemssource
listViewm.ItemsSource = Rows;
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);
}
}