WPF ListBox - 如何从数据表中输入值?

Posted

技术标签:

【中文标题】WPF ListBox - 如何从数据表中输入值?【英文标题】:WPF ListBox - how to put values from dataTable? 【发布时间】:2010-12-19 22:31:26 【问题描述】:

我有ListBox 并希望将来自DataTable 的值放入此列表框中:

listBoxVisibleFields.DataContext = SelectedFields;

其中SelectedFields 是一个充满数据的DataTable。但是这段代码不起作用。我的ListBox 是空的。我记得,在 WinForms 中,ValueMemberDisplayMember 这样的列表框是这样的,但在 WPF 中我找不到类似的东西......

有人知道如何从DataTable 简单地填写我的ListBox 吗?

【问题讨论】:

【参考方案1】:

您要查找的属性是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" />

更优雅一点。

【讨论】:

好的,我把它改成了:listBoxVisibleFields.ItemsSource = SelectedFields as IEnumerable;但是他的不起作用,列表框还是空的。 试试SelectedFields.DefaultView 在这种情况下使用as 是危险的,因为如果转换失败而不是抛出异常,它会静默失败。 也许你也知道如何在 Devexpress WPF 中为 comboBoxEdit 设置 myId 和 myTextField?我之前已经发布了一个问题,但没有人回答...... 不幸的是,我没有使用 Devexpress 的经验,但绑定“普通”WPF ComboBox 就像 ListBox 一样工作。【参考方案2】:

这是我的代码,希望有用

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()

【讨论】:

以上是关于WPF ListBox - 如何从数据表中输入值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在WPF中使用ListBox对键和值进行分组

WPF ListBox 显示重复项。如何四处走动?

如何将字符串列表数据绑定到 WPF/WP7 中的 ListBox?

WPF 中的多列列表框

从WPF ListBox中的单个列表中显示多个类型?

基于 TextBox 值 (WPF) 启用按钮