2010-04-02 2 views
5
내 데이터 소스의

하나는 다음과 같은 인터페이스에 입력되는 값의 컬렉션을 생산사용하여 데이터가 FrameworkElement에게 있습니다 값에 바인딩

public interface IData 
{ 
    string Name { get; } 
    FrameworkElement VisualElement { get; } 
} 

내가 컬렉션을 표시하는 WPF 데이터 바인딩을 사용하고 싶습니다 IData 인스턴스가 TabControl에 있고 여기서 Name 값이 탭의 헤더가되고 VisualElement 값이 해당 탭의 내용으로 표시됩니다.

머리글 바인딩은 간단합니다. 나는 VisualElement 값을 표시 할 수있는 템플릿을 정의하는 방법에 대해 고민 중입니다. 나는 거의 성공하지 못했던 몇 가지 해결책을 시도했다. 최선의 시도는 다음과 같습니다.

<TabControl ItemsSource="{Binding}"> 
     <TabControl.ItemTemplate> 
      <DataTemplate> 
       <Label Content="{Binding Name}"/> 
      </DataTemplate> 
     </TabControl.ItemTemplate> 
     <TabControl.ContentTemplate> 
      <DataTemplate> 
       How do I display VisualElement here? 
      </DataTemplate> 
     </TabControl.ContentTemplate> 
    </TabControl> 

저는 아직 WPF에 새로워서 여기에서 분명한 것을 놓칠 수 있습니다.

답변

10

ContentPresenter이 작성되었습니다. 콘텐츠 템플릿이된다 :

 <TabControl.ContentTemplate> 
      <DataTemplate> 
       <ContentPresenter Content="{Binding VisualElement}" /> 
      </DataTemplate> 
     </TabControl.ContentTemplate> 

가 나는 TextBlockTextBox 함께 테스트했다.

+0

챔피언처럼 일했습니다! 감사! – JaredPar