0

我有这些课程:

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 类的属性“名称”。效果很好。我想要的是绑定到 Brewery 列表第一项的属性“名称”的第二个文本块。如果 breweries 不是 List 我很容易做到这一点,但由于我从 json 获取信息,我无法更改它。

4

1 回答 1

0

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

例如(适应你的例子):

<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>
于 2013-09-08T21:31:15.857 回答