WPF 列表视图未填充 sqlite
本文关键字:填充 sqlite 视图 列表 WPF | 更新日期: 2023-09-27 18:32:12
我正在尝试从sqlite数据库填充列表视图。我的代码是
using (SQLiteConnection connection = new SQLiteConnection(@"Data Source=c:'MyProjects'SqliteTest'TestData.db"))
{
connection.Open();
SQLiteDataAdapter ad = new SQLiteDataAdapter();
SQLiteCommand cmd = new SQLiteCommand();
String str = "SELECT Name,Email FROM tblInfo";
cmd.CommandText = str;
ad.SelectCommand = cmd;
cmd.Connection = connection;
DataSet ds = new DataSet();
ad.Fill(ds);
myList.DataContext = ds.Tables[0].DefaultView;
connection.Close();
}
XAML 代码就像
<Grid>
<ListView x:Name="myList"
Height="100"
HorizontalAlignment="Left"
Margin="10,10,0,0"
VerticalAlignment="Top"
Width="300">
<ListView.View>
<GridView>
<GridViewColumn Width="100" Header="Name" DisplayMemberBinding="{Binding Path=Name}"></GridViewColumn>
<GridViewColumn Width="100" Header="Email" DisplayMemberBinding="{Binding Path=Email}"></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
没有错误,但列表为空。
您正在将控件的 DataContext 设置为您的数据集。 您需要将 ListView 的 ItemSource 设置为 DataSet,或者将 ItemSource 绑定到 DataContext,例如
<ListView ItemsSource={Binding} ... />
菲尔是对的,但你也可以改变
myList.DataContext = ds.Tables[0].DefaultView;
自
myList.ItemsSource= ds.Tables[0].DefaultView;
数据集没有接口 INotifyCollectionChanged 和 INotifyPropertyChanged。 所以 UI 不知道数据集已被填充。
如果数据集更改一次,则只能在填充数据集后绑定(初始化)。
否则,您可以创建一个集合并实现接口。