WPF - 利用資料繫結顯示DataSet的資料

在WPF裡面預設是沒有資料庫相關的資料提供者的,那想要顯示資料庫的資料要怎麼辦?今天參考MSDN上的範例,利用原本ADO.Net的功能將資料填到DataSet裡面之後

在WPF裡面預設是沒有資料庫相關的資料提供者的,那想要顯示資料庫的資料要怎麼辦?今天參考MSDN上的範例,利用原本ADO.Net的功能將資料填到DataSet裡面之後,再利用資料繫結的方式將資料展現出來,下面來看看程式碼吧~

執行的畫面會像這樣

XAML Code

<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <StackPanel Name="spMain">
        <StackPanel.Resources>
            <DataTemplate x:Key="EmpItemTemplate">
                <Grid ShowGridLines="True" >
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="100" />
                        <ColumnDefinition Width="100" />
                        <ColumnDefinition Width="100" />
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Image Source="{Binding Path=pPicture}" Grid.Column="0" />
                    <TextBox Text="{Binding Path=pName}" Grid.Column="1"
                             FontWeight="Bold" />
                    <TextBlock Text="{Binding Path=pTEL}" Grid.Column="2" />
                    <TextBlock Grid.Column="3" Text="{Binding Path=pPicture}" />
                </Grid>
            </DataTemplate>
        </StackPanel.Resources>
        <ListBox Name="lstItem" Height="200"
                 ItemsSource="{Binding Path=myTable}"
                 ItemTemplate="{StaticResource EmpItemTemplate}"/>
    </StackPanel>
</Window>

後置程式碼的部分

Imports System.Data

Class Window1
    Dim CN As OleDb.OleDbConnection
    Dim DA As OleDb.OleDbDataAdapter
    Dim DS As DataSet

    Private Function GetDataPath() As String
        Return _
            Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
    End Function

    Public Function GetAppPath() As String
        Return System.IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase.ToString.Substring(8))
    End Function

    Private Sub Window1_Initialized(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Initialized
        CN = New OleDb.OleDbConnection( _
           String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}\test.mdb", GetAppPath))
        DA = New OleDb.OleDbDataAdapter("Select * from Emp", CN)
        DS = New DataSet
        DA.Fill(DS, "myTable")
        lstItem.DataContext = DS
    End Sub
End Class


完整的專案可以在這邊下載