从服务填充WPF组合框

时间:2016-04-11 15:58:48

标签: c# wpf web-services xaml combobox

我正在尝试从服务响应填充我的组合框。该服务返回一个对象数组,如下面的

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

我已经检查过,firmSocialList正确填充。我需要用这些值填充我的组合框。

我在我的代码中尝试了这个

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

我也在XAML方面尝试了同样的事情,但我得到的只是我的组合框中的一堆空字符串。但事情是,元素的数量与组合框(空字符串)的项目数相匹配。

是的,FirmSocial对象的属性名称是正确的。

FirmSocial类

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;
        }
    }
}

我也在我的XAML部分尝试了这个;

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

感谢。

2 个答案:

答案 0 :(得分:2)

DisplayMemberPath区分大小写。

DisplayMemberPath="socialMediaType"

正在试图绑定到您的私人领域,而不是您的公共财产。尝试:

DisplayMemberPath="SocialMediaType"

答案 1 :(得分:0)

问题是您将DisplayMemberPathSelectedValuePath设置为私有字段而不是公共属性。

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

将其更改为

cbSocialMediaTypes.DisplayMemberPath = "SocialMediaValue";
cbSocialMediaTypes.SelectedValuePath = "SocialMediaType";