2011-04-20 6 views
3

와 바인딩 나는 WPF에 새로 온 사람이 잠시 동안 지금 나에게 난처한 상황에 빠진 다음 : 사람들이 내을 TabControl에 바인딩 내 모델에서 객체의데이터는 WPF

내가 ObservableCollection에 있습니다. 그래서 각각의 새 People 객체가 추가되고, People.Title을 탭의 헤더로하여 새 탭이 만들어집니다.

각 People 객체에는 ObservableCollection of Friend 객체가 있습니다. Tab의 내부에는 Friend.FirstName과 Friend.LastName에 대한 두 개의 텍스트 상자 목록이 있습니다.

내 첫 번째 요구 사항은 잘 작동하지만, 두 번째 오류 'ItemsSource가 이미 사용'

저를주고있다 여기에 지금까지 내 코드입니다 :

<TabControl Name="ConversationTabs" Grid.Row="0" 
       ItemsSource="{Binding}" 
       ItemTemplate="{StaticResource HeaderInfoTabControl}" 
       ContentTemplate="{StaticResource DialogueList}" /> 

<Window.Resources> 
    <DataTemplate x:Key="HeaderInfoTabControl"> 
     <TextBlock Text="{Binding Title}" /> 
    </DataTemplate> 

    <DataTemplate x:Key="DialogueList"> 
     <ItemsControl ItemsSource="{Binding Path=DialogueCollectionVM}"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Path=Sent}" /> 
       <TextBlock Text="{Binding Path=DateSent}" /> 
       <TextBlock Text="{Binding Path=Message}" /> 
      </StackPanel> 
     </ItemsControl> 
    </DataTemplate> 

</Window.Resources> 

나는 당신의 도움을 주셔서 감사합니다.

답변

1

ItemsControl에 항목을 추가하고 ItemsSource를 통해 자동 채우기를 동시에 사용할 수 없습니다. 해당 StackPanel이 ItemsSource의 항목에 사용될 예정이라면 다음을 수행해야합니다.

<ItemsControl ItemsSource="{Binding Path=DialogueCollectionVM}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Path=Sent}" /> 
       <TextBlock Text="{Binding Path=DateSent}" /> 
       <TextBlock Text="{Binding Path=Message}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
+0

감사합니다. 그러나, 사소한 변경했습니다 Hari