我一直试图通过在C#中使用数据绑定将列表中的项目放入组合框中。这是我的代码:
ComboBox Name="genreComboBox" DisplayMemberPath="{Binding Name}" SelectedValuePath="{Binding GenreId}"
C#
IList<Genre> genres = GenreRepository.GetGenres();
genreComboBox.ItemsSource = genres;
我确信IList实际上充满了Genres,并且属性Name也是正确的。当我运行它时,组合框会被一个类型的.toString()填充。我已经尝试添加&#34; genreComboBox.DataContext = genres&#34;此外,这将最终在组合框中充满空字符串。 任何帮助表示赞赏!
答案 0 :(得分:1)
您通常可以使用DataTemplate
执行此操作试试这个
<ComboBox x:Name="genreComboBox">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
您的代码出现问题的原因通常是 DisplayMemberPath
应该是字符串而不是表达式
<ComboBox Name="genreComboBox" DisplayMemberPath="Name" >
答案 1 :(得分:0)
DisplayMemberPath
和SelectedValuePath
是字符串。它们是属性的名称(或路径)。 Read the documentation next time。看到人们根本没有努力解决这些非常简单的问题,这令人失望。如果您使用Google "WPF Combobox DisplayMemberPath",则第一次点击与您的问题完全相同,甚至是显示属性的名称,第二次是记录DisplayMemberPath
的MSDN页面。
<ComboBox
DisplayMemberPath="Name"
SelectedValuePath="GenreId"