2009-11-24 27 views
3

我有ListBox,并希望把价值在这个列表框从DataTableWPF列表框 - 如何从数据表中放置值?

listBoxVisibleFields.DataContext = SelectedFields; 

哪里SelectedFields是一个充满数据的DataTable。但是这个代码不起作用。我的ListBox是空的。我记得,在WinForms的是苏哈像ValueMemberDisplayMember列表框中的事情,但在WPF我不发现类似的东西...

是否有人知道如何简单我ListBoxDataTable填?

回答

3

您正在寻找的财产是ItemsSource而不是DataContext。最接近ValueMember的属性称为SelectedValuePath(请参见this example)。 DisplayMember的模拟器被称为DisplayMemberPath


编辑:那么,你的代码应该是这样的:

DataTable SelectedFields = ...; 
listBoxVisibleFields.SelectedValuePath = "myID"; 
listBoxVisibleFields.DisplayMemberPath = "myTextField"; 
listBoxVisibleFields.ItemsSource = SelectedFields.DefaultView; 

另外,这两个通道值可以在XAML

<ListBox ... SelectedValuePath="myID" DisplayMemberPath="myTextField" /> 

这是更优雅一点设置。

+0

好吧,我把它改为: listBoxVisibleFields.ItemsSource = SelectedFields为IEnumerable; 但是他不工作,无论如何listbox是空的。 – Vytas 2009-11-24 15:48:46

+0

尝试'SelectedFields.DefaultView'。 – Heinzi 2009-11-24 15:53:52

+0

在这种情况下使用'as'是非常危险的,因为如果演员失败而不是抛出异常,它会自动失败。 – Heinzi 2009-11-24 15:54:54

1

这里是我的代码,希望有用

Dim connectionString As String = "Data Source=(local);Database=Catalogos;UID=sa;Password=S1santan" 
Dim conSQL As New SqlClient.SqlConnection() 
conSQL.ConnectionString = connectionString 
conSQL.Open() 
Debug.Print("SELECT * FROM CodigoPostal WHERE CP= '" & _Codigo & "'") 
Dim adaptSQL As New SqlClient.SqlDataAdapter("SELECT * FROM CodigoPostal WHERE CP= '" & _Codigo & "'", conSQL) 

Dim DatosCP As New DataSet 
adaptSQL.Fill(DatosCP, "CodigoPostal") 

'Here you select the table inside a data set 
ListBox1.ItemsSource = DatosCP.Tables("CodigoPostal").DefaultView 
'Here select which field to show 
ListBox1.DisplayMemberPath = "d_asenta" 
'and at last here you select the field you want to use to select values from 
ListBox1.SelectedValuePath = "ID" 

conSQL.Close()