2009-10-01 5 views
8

Je suis nouveau à WPF et ont créé une bibliothèque de contrôle utilisateur WPFWPF problème de classe de base de contrôle de l'utilisateur

J'ai ajouté une classe de base qui ressemble à ceci

public class TControl : UserControl 
{ 
} 

et que vous voulez tous mes contrôles d'hériter à partir de cela.

J'ai un contrôle appelé notification qui ressemble à

public partial class Notification : TControl 
{ 
    public Notification() 
    { 
     InitializeComponent(); 
    } 

fonctionne très bien, sauf si jamais je recompile la classe partielle cachée où InitializeComponent() est défini est regénéré et hérite de System.Windows.Controls.UserControl

cela me donne un

déclarations partielles de 'Twac.RealBoss.UserControls.Notification' ne doit pas spécifier différentes classes de base

erreur

,

est là de toute façon de forcer la classe générée pour hériter de ma classe de base?

Répondre

21

Votre fichier XAML a probablement:

<UserControl x:Class="YourNamespace.Notification" .... > 

Essayez de changer cela:

<Whatever:TControl x:Class="YourNamespace.Notification" xmlns:Whatever="clr-namespace:YourNamespace" /> 

L'erreur que vous obtenez est parce que l'utilisation de UserControl dans le XAML indique au compilateur pour produire une partie classe héritant de UserControl, au lieu d'hériter de votre classe.

2

Vous pouvez supprimer complètement le ": TControl":

public partial class Notification : TControl 
{ 
} 

et écrire:

public partial class Notification 
{ 
} 

à la place, puisque la classe de base est définie dans la partie XAML, comme Paul a écrit.

+0

Absolument correct, je l'ai laissé là pour me rappeler qu'il n'hérite pas seulement d'usercontrol. TControl ne fait rien pour le moment, mais il pourrait dans le futur – aaron

+1

Aussi, je ne voudrais pas utiliser la notation hongroise (TControl, au lieu de Control), contrairement à Delphi, il n'est pas recommandé en C# (ou Java ou C++). En Delphi, il est seulement nécessaire puisque la langue n'est pas sensible à la casse. –