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

本文关键字:绑定 文本 成员 嵌套 列表 | 更新日期: 2023-09-27 18:30:31

我有这些类:

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>

因此,我创建了一个基准对象列表,并将列表框绑定到该列表框。这样,第一个文本块就绑定到基准类的属性"name"。这非常有效。我想要的是将第二个文本块绑定到啤酒厂列表第一项的属性"名称"。如果啤酒厂不是一个列表,我很容易做到这一点,但由于我从 json 中获取信息,我无法更改它。

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

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

例如(改编您的示例):

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