2010-04-02 6 views
5

Una delle mie fonti di dati produce un insieme di valori che vengono digitati al seguente interfacciaUso associazione dati sul valore che è un FrameworkElement

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

mi piacerebbe utilizzare l'associazione dati in WPF per visualizzare una collezione di istanze IData in un TabControl dove il valore Name diventa l'intestazione della scheda e il valore VisualElement viene visualizzato come il contenuto della scheda corrispondente.

Il collegamento dell'intestazione è diritto. Sono bloccato su come definire un modello che mi permetta di visualizzare il valore VisualElement. Ho provato un numero di soluzioni con scarso successo. Il mio miglior tentativo è il seguente.

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

Sono ancora molto nuovo al WPF quindi potrei mancare l'ovvio qui.

risposta

10

ContentPresenter s sono stati creati per questo. Il modello contenuto diventa:

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

ho provato con un TextBlock e TextBox.

+0

Ha funzionato come un campione! Grazie! – JaredPar

Problemi correlati