1

我正在尝试从 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>

没有错误,但列表为空。

4

3 回答 3

1

您正在将控件的 DataContext 设置为您的 DataSet。您要么需要将 ListView 的 ItemSource 设置为 DataSet,要么将 ItemSource 绑定到 DataContext,例如

<ListView ItemsSource={Binding}  ... />
于 2012-04-24T07:29:02.410 回答
1

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

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

 myList.ItemsSource= ds.Tables[0].DefaultView;
于 2012-04-24T08:00:01.943 回答
-1

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

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

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

于 2012-04-24T05:46:09.827 回答