Как получить выбранный элемент вложенного списка? - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть вложенный список, я могу привязать выбранный элемент базового списка к моей модели просмотра, но не мой выбранный элемент вложенного списка (в базовом списке). Я просто делаю: это мой список:

      <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>

ViewModel:

public ExaminationQuestion SelectedExaminationQuestionInCluster
        {
            get { return selectedExaminationQuestionInCluster; }
            set { selectedExaminationQuestionInCluster = value;
            OnPropertyChanged("SelectedExaminationQuestionInCluster");
            }
        }

Кто-то, кто знает, что я делаю не так? Если я установил точку останова установщика selecteditem второго списка просмотра. Он просто игнорирует это ..

Спасибо

1 Ответ

2 голосов
/ 20 апреля 2011

Я думаю, что привязка, вероятно, неверна. В вашем внешнем ListView вы привязываетесь к «кластерам». Возможно, ваш внутренний ListView пытается привязаться к «SelectedExaminationQuestionInCluster» в текущем кластере . Вы можете увидеть, так ли это, используя snoop . Это ценный инструмент при отладке приложений WPF. Он выделит разорванные привязки красным и расскажет, что с ними не так.

Если вы хотите привязать «SelectedExaminationQuestionInCluster» в родительском DataContext, вы можете использовать этот синтаксис:

SelectedItem="{Binding Path=DataContext.SelectedExaminationQuestionInCluster,
               ElementName=OuterListView}"

Вам, конечно, придется дать внешнему ListView имя.

РЕДАКТИРОВАТЬ: Я просто понял, что это может не иметь смысла. Если каждый кластер имеет свою собственную коллекцию ExaminationQuestions, то каждый кластер также должен иметь SelectedExaminationQuestion. Родительский DataContext не должен иметь никакого понятия SelectedQuestion, если он не используется всеми кластерами.

...