绑定到其他集合中存在的集合

时间:2017-07-04 09:54:06

标签: c# wpf

我有ListBox绑定到集合(发布者),每个发布者都有一个名称和作者集合,每个作者都有一个名称。那么我怎样才能提供作者姓名的绑定?

<TextBlock Text="{Binding name}" Grid.Column="1" Grid.Row="1"></TextBlock>
<TextBlock Text="{Binding city}" Grid.Column="1" Grid.Row="0"></TextBlock>

它对发布商的名称和城市具有约束力。

3 个答案:

答案 0 :(得分:1)

这样的事情提供了catch(Exception ex) { // the form that takes two args has an exception as second, prints trace... _log.Error("My custom message", ex); } 类,或者你称之为的任何类,使用具有索引器的公共集合属性公开作者:

Grid.SelectCellAnchorRange(0, columndetails, total_rows, columndetails);

这将显示索引为0的第一位作者的姓名。

如果您打算显示所选发布商的所有作者,则应使用Publisher

<ListBox x:Name="listBox" ItemsSource="{Binding Publishers}" .... />

<TextBlock Text="{Binding SelectedItem.Authors[0].Name, ElementName=listBox}" Grid.Column="1" Grid.Row="0"></TextBlock>

答案 1 :(得分:0)

作者将是集合中的元素,该集合是发布者的一部分。

因此,WPF无法知道&#39;要显示的作者姓名:有多个。

可以使用ItemsControl而不是文本块,将ItemsCollection绑定到当前发布者的作者集合。

答案 2 :(得分:0)

<ListBox ItemsSource="{Binding}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding name}"></TextBlock>
                <ListBox ItemsSource="{Binding authors}">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                             <TextBlock Text="{Binding name}"></TextBlock>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

这将显示发布商的名称,其中包含每个发布商的所有作者的列表。我假设发布商有一个名为authors的属性,返回IEnumerable<Author>