使用分层集合结构的WPF相对绑定

时间:2011-03-07 17:15:01

标签: wpf xaml data-binding

我有一个包含ObservableCollection的ObservableCollection:

public class BooksDetailModel
{
    public BookModel Book{ get; set; }
    public ObservableCollection<AuthorModel> Authors { get; set; }
}

ViewModel中的属性:

public ObservableCollection<BooksDetailModel> Books { get; set; }

我想在ListBox中呈现这样:

第一册

  • 作者1
  • Author2

第二册

  • 作者1

顶级绑定很容易,但我遇到了内部子集合的问题。

到目前为止XAML:

                <ListBox ItemsSource="{Binding Books}" BorderBrush="{x:Null}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Vertical">
                            <TextBlock Text="{Binding Book.Name}" FontSize="12" FontWeight="Bold" />
                            <ListBox>
                                <ListBox.ItemTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding ???, Path=Author.Name}" FontSize="10" />
                                    </DataTemplate>
                                </ListBox.ItemTemplate>
                            </ListBox>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

对???的任何建议 - 将内部列表框项目源相对绑定到父项目源的作者集合。

1 个答案:

答案 0 :(得分:4)

您应该将内部ItemsSource的{​​{1}}绑定到ListBox属性。 Authors中的绑定将只是绑定到作者的DataTemplate属性:

Name