2012-02-09 120 views
0

我想將SQL查詢的結果綁定到WPF界面的列表框。我見過很多例子,我無法調整我的應用程序,以便正常工作。我用這背後代碼:將數據集綁定到列表框

string sqlStr1 = "SELECT Players.LastName FROM Players"; 

SqlDataAdapter dAdapt1 = new SqlDataAdapter(sqlStr1, cnStr); 
DataSet dataSet1 = new DataSet(); 
dAdapt1.Fill(dataSet1); 

List1.DataContext = dataSet1; 

,並在XAML頁面:

<ListBox Name="List1" Grid.Column="1" Grid.Row="2" ></ListBox> 

什麼是約束他們這樣的名稱出現在列表框的方式嗎?

不在xaml頁面中添加任何綁定,它會在我嘗試運行它時拋出一個exceprtion。哪裏不對?

+0

如果你有一個異常**發佈**。 – 2012-02-09 12:01:45

+0

這是一個帶有消息的XamlParseException「類型'TennisPlayers.PlayersHome'上匹配指定綁定約束的構造函數的調用引發了異常。行號「5」和行位置「7」。「此外,它會打開一個標題爲「No Source available」的新頁面。 – arjacsoh 2012-02-09 12:09:41

回答

7

您的itemssource未設置。

你可以這樣做:

List1.ItemsSource= dataSet1.Tables["Players"]; //instead of List1.DataContext = dataSet1; 

List1.DataContext = dataSet1.Tables["Players"]; 
<ListBox Name="List1" ItemsSource="{Binding}" Grid.Column="1" Grid.Row="2" > 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
    <TextBlock Text="{Binding LastName}"/> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

的名字被假設爲列名。順便說一句,所有的代碼只是手寫,所以可能會有一些錯誤:)

+0

順便說一句,而不是將源設置爲數據集,您應該將源設置爲數據集中的數據表 – blindmeis 2012-02-09 12:13:58

+0

想要回答相同的問題,但您只是早一點:)。 – Mixxiphoid 2012-02-09 12:14:08

+0

第二種方式,你建議我已經嘗試過,但我仍然收到相同的例外。第一個是不可接受的,因爲消息狀態「不能隱式地從數據集轉換爲IEnumerable」。什麼會導致XamlParseException? – arjacsoh 2012-02-09 12:21:49