2010-08-11 5 views
1

J'ai deux classes UserControl, RequiredFields et OptionalFields. Je voulais avoir une classe de base, Fields, qui hériterait de UserControl et contiendrait des méthodes que les deux RequiredFields et OptionalFields utiliseraient. Cependant, lorsque je tente de le faire, je reçois l'erreur suivante:WPF, méthodes de partage entre deux classes UserControl

Partial declarations of 'MyNamespace.OptionalFields' must not specify different base classes

Voici mes définitions de classe:

public partial class OptionalFields : Fields 

public partial class RequiredFields : Fields 

public abstract class Fields : UserControl 

Même si je fais Fields une classe partial au lieu de abstract, ou si je en faire une classe régulière non abstraite non partielle, j'obtiens la même erreur.

Est ce que je veux faire possible/raisonnable? Si non, quelle est la meilleure façon de partager les méthodes entre UserControl instances?

Répondre

2

Avez-vous un OptionalFields.xaml? Si c'est le cas, il génère automatiquement OptionalFields.g.cs qui contient le code C# que le XAML représente. Il contient une classe qui hérite de UserControl (ou de l'élément racine de XAML). Essayez de remplacer l'élément racine du fichier XAML par Fields.

+1

yup, vous avez probablement encore dans votre XAML au lieu de ou autre. –

+0

C'était le problème! –

+0

De même, ma classe de base ne devrait certainement pas être «abstraite» car tout contrôle utilisateur qui en hériterait entraînera des erreurs dans la vue de conception, indiquant qu'elle ne peut pas créer une instance de la classe de base. –

0

Avez-vous besoin de mettre à jour l'autre côté du partiel? C'est à dire. Est-ce que OptionalFields.Designer.cs hérite de UserControl?

Edit: désolé d'être WinForms aussi, je veux dire bien sûr OptionalFields.xaml