1

我是 WPF 的新手,并尝试按照 MVVM 范例使用 DataBinding 开发一个小型应用程序。

我正在尝试为文档的 ObservableCollection(我的类型)提供绑定功能。第一个标签将显示文档路径(可通过 Attribute 属性获得),而下一个子标签 - 文档页面 - 将显示适当的信息:页面索引和页面内容(图像)。

这是一个问题 - 如何创建与父标签的查找绑定?在按钮单击命令上,我想传递文档路径,该路径在第一个 DataTemplate 中可用。

有没有办法解决这个问题?你会如何建议绕过它?

此外,是否有更好的方法来处理“嵌套”结构(集合中的集合)?

这是代码https://gist.github.com/b5760982ba81e8ee4036第 14 行

4

1 回答 1

0

你应该使用RelativeSource:

<ItemsControl ItemsSource="{Binding Documents}">
<ItemsControl.ItemTemplate>
    <DataTemplate>
        <StackPanel>
            <Label Content="{Binding Path=Attribute.Path}"/>
                <ItemsControl ItemsSource="{Binding Pages}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <StackPanel>




<Label Content="{Binding Index}"/>
                                <Button Content="{Binding Content}"
                                        Command="{x:Static viewModel:DocViewModel.Tests }" 
                                        CommandParameter="{Binding Path=DataContext.Attribute.Path,RelativeSource={RelativeSource AncestorType=ContentPresenter, Mode=FindAncestor,AncestorLevel=2"/> 
                            </StackPanel>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>

于 2012-12-03T13:29:45.693 回答