2011-07-22 3 views
1

Je pense que je dois créer une nouvelle classe de base pour mes contrôles, parce que ce que j'essaye de faire est de créer plusieurs contrôles pour différentes variations de disposition mais je veux qu'ils traitent tous la même information.Comment créer une classe de base pour un contrôle utilisateur?

C'est pour une application où j'initialise un nouveau usercontrol et lui transmets des paramètres dans le constructeur, pour qu'il ajoute des boutons à l'instance du contrôle avec une disposition spécifique. Ai-je besoin d'une liaison dans le fichier xaml pour que la classe de base puisse contrôler ce qui se trouve sur le fichier xaml?

Répondre

2

Votre meilleur pari serait d'utiliser un contrôle personnalisé plutôt que de l'utilisateur. C'est parce que les contrôles personnalisés sont moins recherchés, ce qui vous permettrait d'utiliser des styles différents pour les différentes mises en page.

L'autre option consisterait à utiliser l'héritage.

par exemple donné une classe de base appelée Foo

public Foo : UserControl 
{ 
    ... 
} 

alors vous créer plusieurs contrôles étendant ce

Code:

public partial Bar : Foo 
{ 
    ... 
} 

XAML:

<Foo xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"> 
    <Grid > 
    </Grid> 
</Foo> 

(note l'utilisation de la classe de base au lieu de UserControl dans le Xaml.)

+0

qui ressemble à ce dont j'ai besoin, donc je vais pouvoir mettre la logique générique dans foo et avoir différents fichiers xaml. Je vais y aller maintenant. –

+0

J'ai eu la même situation, et j'ai essayé d'utiliser cet exemple, mais je ne peux pas obtenir que la classe Foo soit reconnue dans mon xaml. C'est dans le même projet et dans le même espace de noms. – Marlon

+0

Maintenant, ça marche, il suffit d'ajouter la déclaration d'espace de noms de classe FOO: ' Marlon

Questions connexes