2009-10-01 8 views
8

Ich bin neu in WPF und haben eine WPF-Benutzersteuerelementbibliothekwpf Benutzerkontrolle Basisklasse Problem

Ich habe eine Basisklasse geschaffen, wie diese erben

public class TControl : UserControl 
{ 
} 

und wollen alle meine Kontrollen sieht davon.

Ich habe eine Kontrollmeldung genannt, die wie

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

feine Arbeiten außer wann immer ich die versteckte Teil-Klasse neu kompilieren, wo InitializeComponent() definiert ist, wird regeneriert und erbt von System.Windows.Controls.UserControl

das gibt mir eine

Teilerklärungen ‚Twac.RealBoss.UserControls.Notification‘ keine unterschiedlichen Basisklassen angeben müssen

Fehler,

ist es trotzdem die erzeugte Klasse zu zwingen, von meiner Basisklasse zu erben?

Antwort

21

Ihre XAML-Datei wahrscheinlich hat:

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

Versuchen Sie dies zu ändern:

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

Der Fehler, den Sie bekommen, weil die Verwendung von Usercontrol in der XAML die Compiler sagt einen Teil zu erzeugen Klasse, die von UserControl erbt, anstatt von Ihrer Klasse zu erben.

2

Sie können vollständig entfernen ": TControl":

public partial class Notification : TControl 
{ 
} 

und schreiben:

public partial class Notification 
{ 
} 

statt, da die Basisklasse in der XAML-Teil definiert, wie Paulus schrieb.

+0

Absolut richtig, ich habe es da drin vergessen, um mich daran zu erinnern, dass es nicht nur von usercontrol erbt. TControl tut noch nichts, aber es könnte in der Zukunft – aaron

+1

Auch würde ich nicht ungarische Notation (TControl, anstelle von Control) verwenden, im Gegensatz zu Delphi ist es nicht in C# (oder Java oder C++) empfohlen. In Delphi ist es nur erforderlich, da die Sprache Groß- und Kleinschreibung nicht beachtet. –