2017-12-29 2 views
0

私はC#のデータバインディングを使用して、リストからアイテムをコンボボックスに入れようとしています。 IListが実際ジャンルで、プロパティ名が正しいaswellであることを満たしていることを確認しますIListをComboboxに正しくバインドする方法は?

ComboBox Name="genreComboBox" DisplayMemberPath="{Binding Name}" SelectedValuePath="{Binding GenreId}" 

C#

IList<Genre> genres = GenreRepository.GetGenres(); 
genreComboBox.ItemsSource = genres; 

イム:これは私が持っているコードです。これを実行すると、コンボボックスはGenreの.toString()でいっぱいになります。私は "genreComboBox.DataContext = genres"を追加しようとしましたが、これはコンボボックスに空の文字列でいっぱいになってしまいます。 ご協力いただければ幸いです!

答えて

0

あなたは、通常のDataTemplateを使用してこれを行うことができ、

ことで、通常DisplayMemberPathが文字列でない表現でなければなりませんあなたのコードの問題のために、この

<ComboBox x:Name="genreComboBox"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
     <TextBlock Text="{Binding Name}" /> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

理由をお試しください

<ComboBox Name="genreComboBox" DisplayMemberPath="Name" > 
+0

これを使用することについての考えもよく働いています。 DisplayMemberPathが機能していない理由についての推論はありますか?返信いただきありがとうございます! – Notorious

+0

その場合は、 Sajeetharan

0

DisplayMemberPathおよびSelectedValuePathは文字列です。それらはプロパティの名前(またはパス)です。 Read the documentation next time。これらの非常に単純な問題自体を解決するために何の努力もしていない人々を見ることは残念です。 "WPF Combobox DisplayMemberPath"とすると、最初のヒットは質問の正確な重複であり、表示プロパティの名前でさえあり、2番目はMSDNページDisplayMemberPathです。

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

なぜこの回答のためのdownvote? – Sajeetharan

+0

@Sajeetharanおそらく、OPの努力が不足しているという批判に不必要に厳しいか、あるいはおそらくそれが価値の低い重複質問に対する答えなのであろうか。一部の人々は、そのような質問には全く答えてはならないと考えています。 IMOの両方の理由は完全に合法です。あるいは、それは他の何かと同等に正当なものでも、宇宙線がSOデータベースサーバに当たるかもしれません。 –

関連する問題