2014-10-20 1 views
0

ViewModel을 wpf 응용 프로그램의 최상위 DataContext로 설정했지만 새 DataContext가 목록의 요소이므로 ListBox로 점프 할 때 ViewModel에 액세스 할 수없는 것처럼 보입니다 . 아래에 간단한 예가 나와 있습니다. 이 버튼을 클릭에 올 때 ViewModel_ClickFunction 클래스 내의 항목에없는 예를 실제로 작동하지 않습니다ListBox 내에서 ViewModel에 연결할 수 없음

<Window.DataContext> 
    <local:ViewModel/> 
</Window.DataContext> 
<StackPanel> 
    <!--1D List--> 
    <ListBox ItemsSource="{Binding my_list}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <!--Individual Elements--> 
       <TetxBlock Text="{Binding ViewModel_DisplayString}"/> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</StackPanel> 

.

어쨌든 {Binding parent.selected_item} 같은 것을 할 수 있습니까? ListBox 내에서 ViewModel에 액세스 할 수 있어야합니다.

+0

당신은 더 나은 사용'명령어'대신 : 그래서이 경우에 있습니다 (ListBox에) 시각적 트리를 걸어 RelativeSource을 사용하고이 PathDataContext.ViewModel_DisplayString로 변경해야합니다. 나는 당신이 처리기에 접근 할 수 없다고 생각하지 않습니다. 그것은 단순히 코드의 일부입니다. 일반적으로 일부 처리기를 정의 할 때 XAML 코드에 이름을 입력 한 다음 마우스 오른쪽 단추로 클릭하고 * 이벤트 처리기로 이동 *을 선택합니다. –

+0

아 사실. 질문을 받고있는 것에 대해보다 명확하게 질문을 업데이트했습니다. – Coat

답변

2

DataContextItemTemplate은 실제로 항목 자체입니다.

<TetxBlock Text="{Binding DataContext.ViewModel_DisplayString, 
         RelativeSource={RelativeSource AncestorType=ListBox}}"/> 
관련 문제