在我的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。
我做错了什么?
答案 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完美配合。