2010-04-02 7 views
5

Einer meiner Datenquellen erzeugt eine Sammlung von Werten, dieMit den Daten auf Wert Bindung, die eine Framework ist

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

auf die folgende Schnittstelle eingegeben werden, würde Ich mag Daten verwenden, in WPF Binden einer Sammlung anzuzeigen von IData Instanzen in einem TabControl, wobei der Name Wert der Header der Registerkarte wird und der VisualElement Wert als Inhalt der entsprechenden Registerkarte angezeigt wird.

Das Binden der Kopfzeile ist einfach. Ich bin aber fest, wie man eine Vorlage definiert, die es mir ermöglicht, den Wert VisualElement anzuzeigen. Ich habe eine Reihe von Lösungen mit wenig Erfolg ausprobiert. Mein bester Versuch ist wie folgt.

<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> 

Ich bin immer noch sehr neu zu WPF, so dass ich das Offensichtliche hier vermissen könnte.

Antwort

10

ContentPresenter s wurden dafür gemacht. Die Inhaltsvorlage wird:

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

ich es mit einem TextBlock getestet und TextBox.

+0

Arbeitete wie ein Champion! Vielen Dank! – JaredPar