WPF+ListBox数据绑定系统.data.DataRowView
本文关键字:DataRowView data 系统 数据绑定 WPF+ListBox | 更新日期: 2023-09-27 18:00:00
在WPF应用程序中从数据库获取数据后,我正在尝试填充Listbox。
我有一个返回DataTable 的类
class DataBaseTable
{
MySqlConnection connection;
MySqlDataAdapter adapter;
public DataTable GetTable(String query, String sortBy)
{
String connString = "server=localhost;uid=root;pwd=MyNewPass123;database=samprojects;";
connection = new MySqlConnection(connString);
adapter = new MySqlDataAdapter(query, connection);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
dataTable.DefaultView.Sort = sortBy;
return dataTable;
}
}
和XAML代码
<ListBox Name="listbox1" Width="150" Height="150" SelectionMode="Single" ItemsSource="{Binding}" />
主窗口类
public partial class MainWindow : Window
{
private DataBaseTable dbTable = new DataBaseTable();
public MainWindow()
{
InitializeComponent();
listbox1.DataContext = dbTable.GetTable("select name from projects", "name");
}
}
但我的列表框里已经塞满了
System.Data.DataRowView
System.Data.DataRowView
System.Data.DataRowView
不知道哪里出了问题?
默认情况下,控件将显示。对象的ToString()。由于它是一个datarowview,所以它只显示程序集名称。您想要的是设置DisplayMemberPath
<ListBox Name="listbox1" Width="150" Height="150" SelectionMode="Single" ItemsSource="{Binding}" DisplayMemberPath="MyColumn"/>
试试这个:
<ListBox Name="listbox1" Width="150" Height="150" SelectionMode="Single" ItemsSource="{Binding}" />
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这里还有更多关于这个主题的信息:
数据模板