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>

没有错误,但列表为空。

WPF 列表视图未填充 sqlite

您正在将控件的 DataContext 设置为您的数据集。 您需要将 ListView 的 ItemSource 设置为 DataSet,或者将 ItemSource 绑定到 DataContext,例如

<ListView ItemsSource={Binding}  ... />

菲尔是对的,但你也可以改变

 myList.DataContext = ds.Tables[0].DefaultView;

 myList.ItemsSource= ds.Tables[0].DefaultView;

数据集没有接口 INotifyCollectionChanged 和 INotifyPropertyChanged。 所以 UI 不知道数据集已被填充。

如果数据集更改一次,则只能在填充数据集后绑定(初始化)。

否则,您可以创建一个集合并实现接口。