2011-04-20 5 views
0

, 내 뷰 모델에 기본 목록보기의 선택 항목을 결합 할 수 있지만 (기본 목록보기에) 중첩 된 목록보기 내 선택 항목 난 그냥 수행중첩 된 목록보기에서 선택한 항목을 가져 오는 방법은 무엇입니까? 내가 중첩 된 목록보기를

 <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"); 
      } 
     } 

누군가? 만약 내가 두 번째 listview의 selecteditem의 세터의 중단 점을 설정합니다. 그는 그냥 무시 ..

감사

답변

2

을 내 생각이 바인딩은 아마 잘못이다. 바깥 ListView에서 "클러스터"에 바인딩합니다. 내부 ListView가 현재 클러스터에서 "SelectedExaminationQuestionInCluster"에 바인딩하려고합니다. 이 경우에 snoop을 사용하여 확인할 수 있습니다. WPF 앱을 디버깅 할 때 유용한 도구입니다. 깨진 바인딩을 빨간색으로 강조 표시하고 잘못된 내용을 알려줍니다.

상위의 DataContext에 "SelectedExaminationQuestionInCluster"에 결합 할 경우,이 구문을 사용할 수 있습니다 당신은 외부의 ListView에게 코스의 이름을 지정해야합니다

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

합니다.

편집 : 방금 이것이 의미가 없을 수도 있음을 깨달았습니다. 각 클러스터에 고유 한 ExaminationQuestions 컬렉션이있는 경우 각 클러스터에는 SelectedExaminationQuestion도 있어야합니다. 상위 DataContext는 모든 클러스터간에 공유되지 않는 한 SelectedQuestion 개념을 가져서는 안됩니다.

관련 문제