2010-03-25 5 views
3

Je suis plutôt nouveau à WPF, alors peut-être que c'est une question simple. J'ai une classe dérivée de Canvas, appelons-la MyCanvas. Et j'ai une classe, MyClass, qui a une propriété de type MyCanvas. En XAML, j'ai construit un TabControl, donc chaque TabItem se lie à un objet MyClass. Maintenant, dans le contenu de chaque onglet, je veux afficher MyObject.MyCanvas.WPF Canvas Binding

Comment dois-je faire cela?

<TabControl.ContentTemplate> 
    <DataTemplate> 
     <Grid> 
      <myCanvas:MyCanvas Focusable="true" Margin="10" > 
       <Binding Path="Canvas"></Binding> 
      </myCanvas:MyCanvas> 
     </Grid> 
    </DataTemplate> 
</TabControl.ContentTemplate> 

Répondre

5

Vous devez utiliser ContentPresenter

<TabControl.ContentTemplate> 
    <DataTemplate> 
     <Grid> 
      <ContentPresenter Content="{Binding MyCanvas}" Focusable="true" Margin="10" /> 
     </Grid> 
    </DataTemplate> 
</TabControl.ContentTemplate> 
2

Essayez d'utiliser ContentPresenter et lier le contenu à la propriété que vous voulez. Si la propriété est un descendant de Canvas, cela devrait entraîner l'affichage de ce contenu. Si la propriété était d'un autre type, elle tenterait d'utiliser un DataTemplate pour le rendre.

+0

Merci pour la réponse correcte, mais j'ai marqué bniwredyc comme la solution parce que c'était la première fois. – morsanu

+1

Et plus complet. Pas de soucis ... J'ai voté sa réponse dès que je l'ai vu. :) –