2010-04-02 3 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 s были сделаны для этого. Шаблон контента становится:

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

Я тестировал его с TextBlock и TextBox.

+0

Работал как чемпион! Благодаря! – JaredPar

Смежные вопросы