2014-02-11 2 views
1

현재 MVVM 패턴을 사용하는 프로젝트에서 작업 중이며 ObservableCollection을 항목에 대한 템플릿이있는 TabControl에 바인딩하는 방법을 찾을 수 없습니다.ObservableCollection MVVM에 바인딩 된 TabControl

<TabControl ItemsSource="{Binding ConnStringBufferOC}"> 
      <TabControl.ItemTemplate> 
       <DataTemplate> 
       <Grid> 
        <TextBox Text="{Binding Username}"/> 
        <!-- Controls here --> 
       </Grid> 
       </DataTemplate> 
      </TabContro.ItemTemplate> 
</TabControl> 

이 그러나 단지 partialy 작동 : 내가 지금까지 어디서 얻었

는 예를 들어,이입니다. 탭 내용 영역 대신 탭 머리글 영역에 컨트롤을 만듭니다.

Header="{Binding Name}" 

그리고 각 탭의 컨텐츠 영역에서 내가 좋아하는 것

는 내용이 컨트롤을 가지고 : 나는 예를 들어, OC에서 바인딩 소스의 헤더가 새 탭에 각 항목을 바인딩 할 것 이 예제의 ObservableCollection에서 바인딩 된 ConnStringBufferOC. 모든 탭에는 동일한 컨트롤이 있으므로 컨트롤에 바인딩 된 내용 만 다릅니다.

+3

http://stackoverflow.com/questions/5650812/how-do-i-bind-a-tabcontrol-to-a에 대한 탭 내용에 대한 ContentTemplateItemTemplate를 지정해야 -view -collection-of-viewmodels – blindmeis

+0

고마워요. 선생님. – jonjohnson

답변

2

당신은 탭 헤더

<TabControl ItemsSource="{Binding ConnStringBufferOC}"> 
    <TabControl.ContentTemplate> 
     <DataTemplate> 
      <Grid> 
       <TextBox Text="{Binding Username}"/> 
       <!-- Controls here --> 
      </Grid> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 
    <TabControl.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}"/> 
     </DataTemplate> 
    </TabControl.ItemTemplate> 
</TabControl> 
+0

흠, 이것이 작동해야하지만, 어떤 이유로 텍스트 블록의 텍스트가 헤더에 표시되지 않습니다. 그러나 콘텐츠 영역에 동일한 속성을 바인딩하려고 시도하면 콘텐츠 영역이 표시됩니다. – jonjohnson

+0

테스트했을 때 작동했습니다. 당신이 당신의 질문에서 언급하지 않은'TabItem'을위한'Style' 또는'Template'을 변경합니까? – dkozl

+0

예, 사용중인 테마가 맞춤 설정되었습니다. 알림을 보내 주셔서 감사합니다. 나는 내가 무엇을 할 수 있는지를 점검 할 것이다. – jonjohnson

관련 문제