在嵌套列表成员中绑定文本块

时间:2013-09-08 13:31:24

标签: c# wpf windows-phone-7 windows-phone-8 windows-phone

我有这些课程:

public class Datum
{
    public string name{get;set;}
    public string id{get;set}
    public List<Brewery> breweries { get; set; }
    .
    .
}
public class Brewery
{
    public string name { get; set; }
    .
    .
}

这个列表框

<ListBox ItemsSource="{Binding}"  HorizontalAlignment="Left" Height="580" Margin="0,80,0,0" VerticalAlignment="Top" Width="446">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <ListBoxItem Tap="ListBoxItem_Tap" Tag="{Binding Path=id}">                 
                       <TextBlock Name="First"  Text="{Binding Path=name}" />
                       <TextBlock Name="Second" Foreground="Gray" Text="{Binding Path=breweries.name}" />
                    </ListBoxItem>
                </DataTemplate>
            </ListBox.ItemTemplate>
</ListBox>

所以我创建了一个Datum对象列表,并将列表框绑定到它。这样,第一个文本块被绑定到Datum类的属性“name”。这非常有效。我想要的是第二个文本块绑定到Brewery列表的第一个项目的属性“name”。 如果啤酒厂不是List我会轻易做到这一点,但是因为我从json获取信息,我无法改变它。

1 个答案:

答案 0 :(得分:0)

从您的示例中,如果我理解您正确执行的操作,您应该只能使用索引绑定到集合中的所需项目。我不确定这是最好的方法,但它应该产生你想要的结果。

E.g。 (调整你的例子):

<ListBox ItemsSource="{Binding}"  HorizontalAlignment="Left" Height="580" Margin="0,80,0,0" VerticalAlignment="Top" Width="446">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <ListBoxItem Tap="ListBoxItem_Tap" Tag="{Binding Path=id}">                 
                       <TextBlock Name="First"  Text="{Binding Path=name}" />
                       <TextBlock Name="Second" Foreground="Gray" Text="{Binding Path=breweries[0].name}" />
                    </StackPanel>
                </ListBoxItem>
            </DataTemplate>
        </ListBox.ItemTemplate>
</ListBox>