私がやろうとしているのは、単純にコンボボックスに sqlite テーブルのデータを入力することです。私はこれをコード メソッドで行ってきましたが、WPF のより良い方法であることがわかる方法でこれを行うことを本当に望んでいます。
私が理解していることから、フローは次のようになります。
データを保持するクラスが必要です。デフォルトのコンストラクターがデータベースに接続し、その結果を次のようにリストにダンプするクイッククラスを作成しました。
internal class mainmenusql
{
private List<string> _Jobs;
public mainmenusql()
{
SQLiteConnection conn = new SQLiteConnection();
conn.ConnectionString = "Data Source=C:\\Users\\user\\Documents\\db.sqlite;Version=3";
try
{
conn.Open();
SQLiteDataReader reader;
SQLiteCommand command = new SQLiteCommand(conn);
command.CommandType = CommandType.Text;
command.CommandText = "SELECT * FROM Tasks";
reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
_Jobs.Add(reader.GetValue(0).ToString());
}
}
else
{
MessageBox.Show("No records");
}
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
finally
{
conn.Close();
}
}
}
「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というリストにいくつかのエラーがあります。
とにかく、次のステップはDataContext
、フォームの をこのオブジェクトに設定することですよね?
public MainWindow()
{
DataContext = new mainmenusql();
InitializeComponent();
}
最後に、コンボボックスにはバインド権が必要ですか?
<Window x:Class="sqliteDatacontext.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ComboBox DataContext="{Binding Path=_Jobs}" HorizontalAlignment="Left" Margin="141,124,0,0" VerticalAlignment="Top" Width="120"/>
</Grid>
</Window>
ここで何が間違っていますか?