在嵌套列表成员中绑定文本块
本文关键字:绑定 文本 成员 嵌套 列表 | 更新日期: 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>