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

Dataset にはインターフェイス INotifyCollectionChanged および INotifyPropertyChanged がありません。そのため、UI はデータセットが入力されたことを知りません。

データセットが一度変更された場合、データセットが取り込まれた後にのみバインド (初期化) できます。

それ以外の場合は、コレクションを作成してインターフェイスを実装できます。

于 2012-04-24T05:46:09.827 に答える