2012-02-09 137 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