如何正确绑定IList到Combobox?

时间:2017-12-29 17:47:47

标签: c# wpf

我一直试图通过在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;此外,这将最终在组合框中充满空字符串。 任何帮助表示赞赏!

2 个答案:

答案 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)

DisplayMemberPathSelectedValuePath是字符串。它们是属性的名称(或路径)。 Read the documentation next time。看到人们根本没有努力解决这些非常简单的问题,这令人失望。如果您使用Google "WPF Combobox DisplayMemberPath",则第一次点击与您的问题完全相同,甚至是显示属性的名称,第二次是记录DisplayMemberPath的MSDN页面。

<ComboBox
    DisplayMemberPath="Name" 
    SelectedValuePath="GenreId"