2010-03-01 6 views
1

De quels contrôles hériter de qui possède la propriété Children et prend en charge la création de modèles lors de la création d'un contrôle personnalisé.Contrôle XAML pour hériter des modèles

Actuellement je sais à propos Panel, mais il ne supporte pas les propriétés et méthodes comme DefaultStyleKey et GetTemplateChild();

Y at-il une interface que je peux hériter de modèles tels que pour:

public class Scroller : Panel, ITemplates //Something like ITemplates 
{ 
    public override void OnApplyTemplate() 
    { 
     base.OnApplyTemplate(); 
     container = GetTemplateChild("container") as StackPanel; //I want to be able to do this 

     this.Children; //And also be able to use this 
    } 
} 

Répondre

1

Vous voulez ItemsControl. Il a une propriété Items et son template est très flexible comme en témoigne le fait que TabControl, ListBox, ComboBox, etc en dérivent tous.

+0

Pour une raison quelconque, c'est ce qui était là avant mais cela ne fonctionnerait pas. Je vais utiliser mon contrôle personnalisé à l'intérieur d'un ItemsPanelTemplate pour une zone de liste. Lorsque j'hérite de ItemsControl, il me dit que j'ai besoin d'une racine de Panel. –

+0

Correct, si vous essayez de remplacer la mise en page d'un ListBox, vous devez créer un Panel et vous n'obtenez pas de modèle. Un panneau n'a aucune représentation visuelle, il expose simplement ses enfants et donc il n'y a pas besoin d'un modèle. – Josh

+0

Vous devriez plutôt décider si vous voulez créer un objet ItemsControl personnalisé (en d'autres termes, pas de ListBox) ou si vous voulez juste remplacer la mise en page d'un ListBox. – Josh

Questions connexes