【问题标题】:WPF + ListBox Databinding system.data.DataRowViewWPF + ListBox 数据绑定 system.data.DataRowView
【发布时间】:2014-06-11 02:14:03
【问题描述】:

我在 WPF 应用程序中从数据库中获取数据后尝试填充列表框。

我有一个返回 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

无法找出问题所在?

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    默认情况下,控件将显示对象的 .ToString()。因为它是一个数据行视图,所以它只显示程序集名称。你想要的是设置 DisplayMemberPath

    <ListBox Name="listbox1" Width="150" Height="150" SelectionMode="Single" ItemsSource="{Binding}" DisplayMemberPath="MyColumn"/>
    

    【讨论】:

      【解决方案2】:

      试试这个:

      <ListBox Name="listbox1" Width="150" Height="150" SelectionMode="Single" ItemsSource="{Binding}" />
        <ListBox.ItemTemplate>
          <DataTemplate>
            <TextBlock Text="{Binding name}" />
          </DataTemplate>
        </ListBox.ItemTemplate>
      </ListBox>
      

      这里还有关于这个主题的更多信息:

      Data Templates

      【讨论】:

      • 另一个答案更适合您的需求。如果您的数据表中有多个列并且您希望将多个控件绑定到不同的值,则此技术会更有用。
      • 是的,Ric 是对的,当处理超过 1 个要显示的值时,您将不得不使用此方法。
      猜你喜欢
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 2015-09-15
      相关资源
      最近更新 更多