我想将我的列表框与我从json Web服务获得的单独列表数据绑定,所以它看起来像这样:
public List<Phone> phone { get; set; }
public List<Fax> fax { get; set; }
public List<Email> email { get; set; }
public List<Website> website { get; set; }
我希望将所有列表绑定到一个列表框中,因此我的列表框将在一个项目中包含电话,传真,电子邮件和网站......如何做到这一点?
编辑:我想到的格式示例
电话:+04532534534
传真:+5234523453
电子邮件:user@user.com
网站:www.user.com
编辑:到目前为止我的方法是将分隔的列表放入我的mainviewmodel
中的单独属性中RootObjectDetail result = JsonConvert.DeserializeObject<RootObjectDetail>(e.Result);
if (result.contacts.email != null)
hereRestEmail = new ObservableCollection<Email>(result.contacts.email);
if (result.contacts.phone != null)
hereRestPhone = new ObservableCollection<Phone>(result.contacts.phone);
if (result.media.reviews.items != null)
hereRestReview = new ObservableCollection<ItemReview>(result.media.reviews.items);
if (result.media.images.items != null)
hereRestImage = new ObservableCollection<ItemImage>(result.media.images.items);
但我只是不知道如何将它绑定到我的列表框datacontex,因为我只能绑定其中一个属性
<telerikPrimitives:RadDataBoundListBox
x:Name="ContactListBox"
ItemsSource="{Binding hereRestPhone}">
<telerikPrimitives:RadDataBoundListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding LocalizedResources.phone,
Mode=OneWay, Source={StaticResource LocalizedStrings}}"
Style="{StaticResource PhoneTextLargeStyle}"/>
<TextBlock Grid.Column="1" Text="{Binding value}"
Style="{StaticResource PhoneTextLargeStyle}" />
</DataTemplate>
</telerikPrimitives:RadDataBoundListBox.ItemTemplate>
它只能显示电话,我仍然不知道如何将传真,电子邮件和网站绑定到此列表框
答案 0 :(得分:1)
在不知道你的课程内部是什么样的情况下,我只能猜测:
var allValues =
phone.Select(x => new { Type = "phone", Value = x.PhoneNumber })
.Concat(fax.Select(x => new { Type = "fax", Value = x.FaxNumber }))
.Concat(email.Select(x => new { Type = "email", Value = x.EmailAddr }))
.Concat(website.Select(x => new { Type = "website", Value = x.URL }))
.ToList();
你最终会得到一个带有“类型”和“价值”的(匿名类型)列表。
我没有对此进行过测试,但您应该可以在XAML中设置模板,绑定到“类型”和“值”,并让它们显示为您在上面指出的内容。