在代码中设置ComboBox的DisplayMemberPath

时间:2011-11-27 19:09:59

标签: wpf-controls

在我的WPF计划中,我有:

        string queryString = "Select AccountID, ProjectName from Foo where IsEnabled = 1";
        SqlDataAdapter adapter = new SqlDataAdapter(queryString, sConn1);
        DataSet dsAccounts = new DataSet();
        adapter.Fill(dsAccounts, "Accounts");

        cbAccount.ItemsSource = dsAccounts.Tables["Accounts"].AsEnumerable();
        cbAccount.DisplayMemberPath = "ProjectName";

当我的程序运行并且我下拉ComboBox时,所有行都在那里,但它们显示为空白。当我单击一行时,我的SelectionChanged事件处理程序正确识别所选行并获取正确的值。

我相信我的问题在于DisplayMemberPath。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

这不是一个答案,而是一种解决方法。这有效:

        cbAccount.DataContext = dsAccounts.Tables["Accounts"];
        //cbAccount.ItemsSource = dsAccounts.Tables["Accounts"].AsEnumerable();
        cbAccount.DisplayMemberPath = "ProjectName";

通过设置DataContext reather而不是ItemSource,然后正确设置DisplayMemberPath。

问题仍然存在,当有一个ItemSource而不是DataContext时,必须有一种正确设置DisplayMemberPath的方法。

答案 1 :(得分:0)

我认为问题是你的表帐户没有序列化为对象。

如果您使用的是帐户列表而不是表格,那么它与ItemsSource和DisplayMemeberPath完美配合。