2016-04-11 8 views
0

サービス応答からコンボボックスにデータを入力しようとしています。サービスは、次のようなオブジェクトの配列を返します。サービスからWPFコンボボックスにデータを取り込みます

MyService.FirmSocial[] firmSocialList = client.GetActiveSocialMediaTypes(); 

firmSocialListが正しく設定されています。私はこれらの値で私のコンボボックスに値を設定する必要があります。

私は

cbSocialMediaTypes.ItemsSource = firmSocialList; 
cbSocialMediaTypes.DisplayMemberPath = "socialMediaValue"; 
cbSocialMediaTypes.SelectedValuePath = "socialMediaType"; 

の後ろに私のコードでこれを試してみましたが、私はまた、XAML側で同じことを試してみましたが、私は取得しています、すべては私のコンボボックスで空の文字列の束です。ただし、要素の数は(空の文字列の)コンボボックスの項目数と一致します。

はい、FirmSocialオブジェクトのプロパティ名は正しいです。

そして、私はまた私のXAML部でこれを試してみました

public class FirmSocial 
{ 
    private int socialMediaType; 
    private string socialMediaValue; 
    public int SocialMediaType 
    { 
     get 
     { 
      return socialMediaType; 
     } 
     set 
     { 
      socialMediaType = value; 
     } 
    } 
    public string SocialMediaValue 
    { 
     get 
     { 
      return socialMediaValue; 
     } 
     set 
     { 
      socialMediaValue = value; 
     } 
    } 
} 

FirmSocialクラス。

<ComboBox x:Name="cbSocialMediaTypes" HorizontalAlignment="Left" Margin="56,8,0,0" VerticalAlignment="Top" Width="211" 
ItemsSource="{Binding firmSocialList}" 
DisplayMemberPath="socialMediaType" 
SelectedValuePath="socialMediaType" /> 

ありがとうございます。

+0

に変更し、それをあなたの質問のタイトルにタグを追加し、人為的に避けてください。 [タグとは何ですか?どうすれば使用できますか?](http://stackoverflow.com/help/tagging)を参照してください。 – CodingGorilla

+0

FirmSocialに小さなスニペットを投稿できますか?私が気付くことの1つは、コンベンションはプロパティ名を大文字にし、フィールドを小文字にすることです。これはsocialMediaValueがプロパティではないフィールドであることを示唆しています(明らかにこれは慣例に過ぎません)。 また、出力にバインディングエラーがありますか(ただし、メンバーパスがバインディングエラーを生成するかわかりません) – Joe

+0

こんにちは@Joe FirmSocialクラスのコンテンツを追加しました。私は実際に何が間違っているのかわからない、私はかなり新しいWPFです... :) –

答えて

2

DisplayMemberPathは大文字と小文字を区別します。

DisplayMemberPath="socialMediaType" 

は、あなたのプライベートフィールドにバインドしようとしていますが、あなたの公共財産はバインドしようとしていません。試してみてください:

DisplayMemberPath="SocialMediaType" 
+0

それは恥ずかしかった!気付かなかった...ありがとう。 –

0

問題は、あなたがプライベートフィールドの代わりに、パブリックプロパティにDisplayMemberPathSelectedValuePathを設定することです。

cbSocialMediaTypes.DisplayMemberPath = "socialMediaValue"; 
cbSocialMediaTypes.SelectedValuePath = "socialMediaType"; 

cbSocialMediaTypes.DisplayMemberPath = "SocialMediaValue"; 
cbSocialMediaTypes.SelectedValuePath = "SocialMediaType"; 
関連する問題