我有一个嵌套的列表视图,我可以将基本列表视图的选定项目绑定到我的viewmodel,但不能将我所选择的嵌套列表视图项目(在基本列表视图中)绑定到: 这是我的列表视图:
<ListView Height="155" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Visible" dd:DragDrop.IsDragSource="True"
dd:DragDrop.IsDropTarget="False" Margin="24,506,280,169" Background="#CDC5CBC5"
dd:DragDrop.DropHandler="{Binding}" SelectedItem ="{Binding Path=SelectedCluster,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" ItemsSource="{Binding Path=Clusters,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" >
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Titel" DisplayMemberBinding="{Binding Title}"/>
<GridViewColumn Header="Questions">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListView DataContext="{Binding}" ItemsSource="{Binding ExaminationQuestions}" SelectedItem="{Binding Path=SelectedExaminationQuestionInCluster,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}">
<ListView.View>
<GridView>
<GridViewColumn Header="Description" DisplayMemberBinding="{Binding Question.Description}"/>
</GridView>
</ListView.View>
</ListView>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
视图模型:
public ExaminationQuestion SelectedExaminationQuestionInCluster
{
get { return selectedExaminationQuestionInCluster; }
set { selectedExaminationQuestionInCluster = value;
OnPropertyChanged("SelectedExaminationQuestionInCluster");
}
}
有谁知道我做错了什么?如果我设置第二个列表视图的selecteditem的setter的断点。他只是忽略了......
由于
答案 0 :(得分:2)
我的猜测是绑定可能不正确。在外部ListView中,绑定到“Clusters”。您的内部ListView可能正在尝试绑定到当前群集上的“SelectedExaminationQuestionInCluster” 。您可以使用snoop查看是否是这种情况。在调试WPF应用程序时,它是一个有价值的工具。它会以红色突出显示破损的绑定并告诉你它们有什么问题。
如果要绑定到父DataContext上的“SelectedExaminationQuestionInCluster”,可以使用以下语法:
SelectedItem="{Binding Path=DataContext.SelectedExaminationQuestionInCluster,
ElementName=OuterListView}"
你必须给外部ListView一个名称。
编辑:我刚刚意识到这可能没有意义。如果每个Cluster都有自己的ExaminationQuestions集合,那么每个Cluster也应该有一个SelectedExaminationQuestion。除非在所有集群之间共享,否则父DataContext不应具有SelectedQuestion的任何概念。