2014-11-27 2 views
1

내가이대신 직접 여러 수준

Being 
|_ Person 
    |_ Billing Address 
    |_ Customer 
     |_ Shipping Addresses (Collection) 
     |_ etc.. 
    |_ etc.. 

내보기와 같은 모델 구조를 가지고 말 모델로의 VM 래퍼로보기를 결합하는 방법 MVVM을 사용하여이

ListBox (ItemsSource - bound to a VM wrapper of "Being") 
    - DataTemplate containing ListBox2 (ItemsSource - bound to a VM wrapper of "Person") 
     - DataTemplate containing ListBox3 (ItemsSource that I want to be bound to "Shipping Adresses") PROBLEM! 

임입니다 Light 및 Locator를 사용하지만 세 번째 수준 인 DataTemplate (ListBox3)에서 "Shipping Adresses"바인딩을 수행하는 방법을 파악할 수 없습니다. 모델의 Shipping Addresses Collection에 직접 바인딩 만 할 수 있습니다. 하지만 나는 고객의 VM 랩퍼에서이 작업을 수행하려고합니다. 왜냐하면 콜렉션을 가지고 뭔가를해야하기 때문입니다. 모든 코드가 내부 바인딩에 도움이됩니다.

답변

0

귀하의 모델 계층 구조를 이해하면 해운 주소가 4 단계라고 생각됩니다 (귀하가 추상적 또는 0 일 것을 의미하지 않는다면).

<Listbox ItemsSource="{Binding Being}"> 
    <DataTemplate> 
     <Listbox ItemSource="{Binding Person}"> 
      <DataTemplate> 
       <Listbox ItemSource="{Binding Customer}"> 
        <DataTemplate> 
         <Listbox ItemSource="{Binding ShippingAddress}"/>    
        </DataTemplate> 
       </Listbox>     
      </DataTemplate> 
     </Listbox> 
    </DataTemplate> 
</Listbox> 

또한, XAML의 도트 표시는 속성에서 작동한다고 생각합니다. 따라서 이와 같은 것을 시도하십시오

<Listbox ItemsSource="{Binding Being}"> 
    <DataTemplate> 
     <Listbox ItemSource="{Binding Person}"> 
      <DataTemplate> 
       <Listbox ItemSource="{Binding Customer.ShippingAddresses}"/> 
      </DataTemplate> 
     </Listbox> 
    </DataTemplate> 
</Listbox> 

일부 코드 스 니펫을 게시 할 수 있다면 솔루션을 찾을 수 있습니다.

관련 문제