在我的QuestionsPage
中,我在另一个列表视图(ListView
)中有一个AnswersListView
(QuestionsListView
)。
如何在ItemsSource
的{{1}}中引用问题的索引(在QuestionsListView中)?
为了使它更清晰,这里是一个简化的代码...我想用问题的索引替换AnswersListView
。
希望这是可以理解的。
在我的XAML中:
???
我的模型(了解一个人与另一个人的关系):
<ListView x:Name="QuestionsListView"
ItemsSource="{Binding Challenge.questions}"
<ListView.ItemTemplate>
<DataTemplate>
<ListView x:Name="AnswersListView"
ItemsSource="{Binding Challenge.questions[???].answers, Source={x:Reference QuestionsPage}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<local:AnswerButton Text="{Binding isCorrect}" Command="{Binding BindingContext.CheckAnswerCommand, Source={x:Reference QuestionsPage}" CommandParameter="{Binding isCorrect}"/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
答案 0 :(得分:1)
您不必从原始DataContext
引用它。使用ItemsSource
实际上是将Challenge.question
属性设置为列表的数据源。现在,当您定义ListView.ItemTemplate
时,您实际上是在列表中的一个问题的上下文中。所以{Binding}
内的每个DataTemplate
都与问题本身有关(除非你另有说明)。
这意味着,您只需使用{Binding answers}
将内部列表绑定到可用答案列表:
<ListView x:Name="QuestionsListView"
ItemsSource="{Binding Challenge.questions}"
<ListView.ItemTemplate>
<DataTemplate>
<ListView x:Name="AnswersListView"
ItemsSource="{Binding answers}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<local:AnswerButton Text="{Binding isCorrect}" Command="{Binding BindingContext.CheckAnswerCommand, Source={x:Reference QuestionsPage}" CommandParameter="{Binding isCorrect}"/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>