2014-11-02 2 views
0

observablecollection 내의 각 항목에 대해 datatemplate을 바인딩하여 모두 표시되도록하려면 어떻게해야합니까? 또는이를 개별 컨트롤로 런타임에 추가해야합니까? datatemplate을 모두 observablecollection에 바인딩하여 모두 표시되도록하려면 어떻게해야합니까?

그래서 나는 DataTemplate을 가지고 :

<UserControl.Resources> 
    <DataTemplate x:Key="QueueItem"> 
     <StackPanel Orientation="Vertical"> 
      <Label Content="{Binding caseNumber}"></Label> 
      <!--TODO: put my other controls for this template here...--> 
     </StackPanel> 
    </DataTemplate> 
</UserControl.Resources> 

을 그리고 난 여기 XAML에서 그것을 구현 :

<ContentControl 
       Content="{Binding TestItems}" 
       ContentTemplate="{StaticResource QueueItem}"> 
</ContentControl> 

을 그리고 내 ViewModel에 거기에 내가 만든 몇 가지 클래스의 인스턴스 TestItems이며, 한 회원 그 caseNumber, 위의 코드를 잘 작동합니다 그래서 나를 위해 ...하지만 지금은 같은 클래스의 관찰 할 수있는 컬렉션을 갖고 싶습니다, 가능/xaml 구문을 복제 할 컬렉션 인스턴스에 바인딩 할 수 있습니다. 각 색인에 대해 위의?

감사합니다.

+0

'ContentControl'는 단일 항목을 표시하기위한'동안 ItemsControl'은 항목 목록을 표시하기위한 것입니다. – Rachel

답변

1

당신은 ItemsControl에를 사용하여 템플릿의 ItemsTemplate 속성을 사용할 수 있습니다

<ContentControl> 
    <ItemsControl 
      ItemsSource="{Binding YourTestItemList}" 
      ItemTemplate="{StaticResource QueueItem}"/> 
</ContentControl> 
+0

감사합니다! 이것은 나에게 어떤 오류도주지는 않지만 화면에 결과가 표시되지 않습니다. 이 작품을 만들기 위해 뭔가 다른 것이 필요한지 궁금합니다. itemscontrol 및 observablecollections에 대한 데모 온라인을 찾을 수 있는지 확인합니다 – Chris

+1

바인딩의 어딘가에 오타가있을 수 있습니까? 바인딩 오류에 대한 로그 수준을 높이려고 할 수 있습니다 ([here] (http://msdn.microsoft.com/en-us/library/dd409960.aspx) 참조), 디버그 출력에 더 많은 정보를 얻을 수 있습니까? 창문? – pgenfer

+0

정말 고마워요! 당신의 대답은 정확했고 당신의 의견은 저의 버그를 해결하는 데 도움이되었습니다! 결국 문제는 내 속성이 public이 아닌 internal이라는 사실이었습니다. 그래서 public으로 변경 한 후에 코드가 완벽하게 작동했습니다. – Chris

관련 문제