2012-02-09 3 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 페이지에 Binding을 추가하지 않으면 실행하려고 할 때 exceprtion이 발생합니다. 뭐가 잘못 되었 니?

+0

예외가있을 경우 ** 게시하십시오 **. –

+0

"지정된 바인딩 제약 조건과 일치하는 'TennisPlayers.PlayersHome'형식의 생성자를 호출하면 예외가 발생했습니다. '라는 메시지가있는 XamlParseException입니다. 줄 번호 '5'와 줄 위치 '7'. " 또한 "No Source available"헤더가있는 새 페이지가 열립니다. – arjacsoh

답변

7

항목 소스가 설정되지 않았습니다.

당신은 할 수 있습니다 :

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> 

은 COLUMNNAME로 가정한다. btw 모든 코드는 단지 손으로 작성되었으므로 약간의 오류가있을 수 있습니다 :)

+0

btw 소스를 데이터 세트로 설정하는 대신 데이터 세트의 데이터 테이블에 소스를 설정해야합니다. – blindmeis

+0

답변을 원했지만 조금 더 빨랐습니다 :). – Mixxiphoid

+0

두 번째 방법은 내가 이미 시도한 제안하지만 여전히 동일한 예외가 나타납니다. 첫 번째 메시지는 "데이터 집합에서 암시 적으로 IEnumerable로 변환 할 수 없습니다"라는 메시지 상태로 허용되지 않습니다. 무엇이 XamlParseException을 유발할 수 있습니까? – arjacsoh

관련 문제