2011-02-25 3 views
0

Hey, je crée un Custom Control i WPF héritant de ListView. Cependant, je veux qu'il ressemble exactement au ListView déjà existant.WPF: Créer un contrôle personnalisé sans réécrire le ControlTemplate

Existe-t-il un moyen d'utiliser le modèle ListView par défaut dans un contrôle personnalisé sans le réécrire dans xaml? J'ai un fichier Generic.xaml avec le nouveau contrôle ajouté, mais je ne devrais pas besoin de réécrire le code du modèle.

Merci

EDIT: Je veux aussi garder le plus sec possible sans répéter (faire un gâchis) le code.

Répondre

4

Si vous sous-classez ListView, votre contrôle sous-classé utilisera le modèle ListView. C'est tout! Tu n'as rien à faire!

Le modèle utilisé par un contrôle est défini par sa propriété de dépendance DefaultStyleKey. Si vous voulez changer le modèle de votre contrôle, définissez cette propriété comme suit:

DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl), 
    new FrameworkPropertyMetadata(typeof(MyControl))); 

Cependant, si vous ne définissez pas cette propriété, il utilisera la valeur définie par la superclasse.

Je pense que le problème est que vous avez utilisé "Ajouter un nouvel élément" => "Contrôle personnalisé" pour créer votre contrôle, puis changé la classe qu'il étend. Au lieu de cela, ajoutez simplement une nouvelle classe C# et étendez ListView.

+0

Sweet! Merci ColinE –

1
<Style TargetType="{x:Type local:MyControl}" BasedOn={StaticResource {x:Type ListView}}" /> 
Questions connexes