我相信了解 UWP 应用开发的同学都对 ListView 和 GridView 的数据绑定很熟悉啦,那我在做一个小应用的时候突然对 Pivot 有了数据绑定的要求,主要是索引出数据库里的表,每一张表都抽象成 Pivot 的一个 Header,那我们怎么做呢?
首先,既然是数据绑定,那先建一个模型类再说嘛
public class Pivots
{
public string Header { get; set; }
}
接下来我们用动态列表将这个类加载出来
private ObservableCollection<Pivots> pivots;
我们写一个查询数据库内所有表的方法
public static ObservableCollection<Pivots> QureyTable(string basename)
{
ObservableCollection<Pivots> pivots = new ObservableCollection<Pivots>();
using (SqliteConnection db = new SqliteConnection("Filename=" + basename + ".db"))
{
db.Open();
SqliteCommand command = new SqliteCommand("SELECT name FROM sqlite_master WHERE type = 'table' ORDER BY name ", db);
SqliteDataReader query = command.ExecuteReader();
while (query.Read())
{
pivots.Add(new Pivots { Header = query.GetString(0)});
}
db.Close();
}
return pivots;
}
注意这个方法要传入数据库的名字,不然去哪找 表 ··· 这个方法返回的就是 ObservableCollection<Pivots> 类型,所以我们可以直接把返回的值赋给 Pivots
pivots = Query.QureyTable(basename);
这样就完成了一半了,我们来看怎么将数据绑定在 XAML 文件上
<Page.Resources>
<DataTemplate x:Key="DT_Header" x:DataType="data:Pivots">
<TextBlock Text="{x:Bind Header}" />
</DataTemplate>
</Page.Resources>
<Grid>
<Pivot Title="MY APPLICATION"
Name="pivothub"
HeaderTemplate="{StaticResource DT_Header}"
ItemsSource="{x:Bind pivots}">
</Pivot>
</Grid>
这样就可以实现 Pivot 控件的 Header 动态加载了!
可能会有童鞋问了,怎么样动态加载 Pivot 控件的 Item?我会在下一篇博文里讲解~