方法: ADO.NET データ ソースにバインドするHow to: Bind to an ADO.NET Data Source

この例では、バインド、 Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) ListBoxへの制御、 ADO.NETADO.NET DataSetThis example shows how to bind a Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) ListBox control to an ADO.NETADO.NET DataSet.

Example

この例では、データ ソース (接続文字列で指定された OleDbConnection ファイル) に接続するために、Access MDB オブジェクトを使用します。In this example, an OleDbConnection object is used to connect to the data source which is an Access MDB file that is specified in the connection string. 接続が確立されると、OleDbDataAdapter オブジェクトが作成されます。After the connection is established, an OleDbDataAdapter object is created. OleDbDataAdapter オブジェクトは、select 構造化照会言語 (SQL)Structured Query Language (SQL) ステートメントを実行して、データベースからレコードセットを取得します。The OleDbDataAdapter object executes a select 構造化照会言語 (SQL)Structured Query Language (SQL) statement to retrieve the recordset from the database. SQLSQL コマンドの結果は、OleDbDataAdapterFill メソッドを呼び出して、DataSetDataTable に格納されます。The results from the SQLSQL command are stored in a DataTable of the DataSet by calling the Fill method of the OleDbDataAdapter. この例の DataTable には、BookTable という名前が付いています。The DataTable in this example is named BookTable. 設定し、DataContextのプロパティ、ListBoxDataSetオブジェクト。The example then sets the DataContext property of the ListBox to the DataSet object.

DataSet myDataSet;

private void OnInit(object sender, EventArgs e)
{
  string mdbFile = Path.Combine(AppDataPath, "BookData.mdb");
  string connString = string.Format(
      "Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", mdbFile);
  OleDbConnection conn = new OleDbConnection(connString);
  OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM BookTable;", conn);

  myDataSet = new DataSet();
  adapter.Fill(myDataSet, "BookTable");

  // myListBox is a ListBox control.
  // Set the DataContext of the ListBox to myDataSet
  myListBox.DataContext = myDataSet;
}
Private myDataSet As DataSet

Private Sub OnInit(ByVal sender As Object, ByVal e As EventArgs)
  Dim mdbFile As String = Path.Combine(AppDataPath, "BookData.mdb")
  Dim connString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", mdbFile)
  Dim conn As New OleDbConnection(connString)
  Dim adapter As New OleDbDataAdapter("SELECT * FROM BookTable;", conn)

  myDataSet = New DataSet()
  adapter.Fill(myDataSet, "BookTable")

  ' myListBox is a ListBox control.
  ' Set the DataContext of the ListBox to myDataSet
  myListBox.DataContext = myDataSet
End Sub

バインドできます、ItemsSourceのプロパティ、ListBoxBookTableDataSet:We can then bind the ItemsSource property of the ListBox to BookTable of the DataSet:

<ListBox Name="myListBox" Height="200"
  ItemsSource="{Binding Path=BookTable}"
  ItemTemplate  ="{StaticResource BookItemTemplate}"/>

BookItemTemplate DataTemplateデータの表示方法を定義します。BookItemTemplate is the DataTemplate that defines how the data appears:

<StackPanel.Resources>
  <c:IntColorConverter x:Key="MyConverter"/>

  <DataTemplate x:Key="BookItemTemplate">
    <Grid>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="250" />
        <ColumnDefinition Width="100" />
        <ColumnDefinition Width="*"/>
      </Grid.ColumnDefinitions>
      <TextBlock Text="{Binding Path=Title}" Grid.Column="0"
        FontWeight="Bold" />
      <TextBlock Text="{Binding Path=ISBN}" Grid.Column="1" />
      <TextBlock Grid.Column="2" Text="{Binding Path=NumPages}"
                 Background="{Binding Path=NumPages,
          Converter={StaticResource MyConverter}}"/>
    </Grid>
  </DataTemplate>
</StackPanel.Resources>

IntColorConverter は、int を 1 つの色に変換します。The IntColorConverter converts an int to a color. このコンバーターの使用に、 Background 、3 番目の色TextBlockが緑で表示場合の値NumPages350 より小さいと、赤をそれ以外の場合は。With the use of this converter, the Background color of the third TextBlock appears green if the value of NumPages is less than 350 and red otherwise. コンバーターの実装は、ここでは示されていません。The implementation of the converter is not shown here.

関連項目See also