2009-10-01 25 views
8

Sono nuovo di WPF e ho creato un WPF User Libreria di controlliWPF controllo utente problema della classe base

ho aggiunto una classe base che assomiglia a questo

public class TControl : UserControl 
{ 
} 

e vuole tutti i miei controlli di ereditare da.

Ho un controllo chiamata di notifica che si presenta come

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

funziona bene, tranne quando mai ho ricompilare il classe parziale nascosta in cui è definito InitializeComponent() viene rigenerato e eredita da System.Windows.Controls.UserControl

questo mi dà un

dichiarazioni parziali di 'Twac.RealBoss.UserControls.Notification' non deve specificare diverse classi di base

errore,

Esiste un modo per forzare la classe generata per ereditare dalla mia classe di base?

risposta

21

Il file XAML ha probabilmente:

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

provare a cambiare questo:

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

L'errore che si stanno ottenendo è perché l'uso del UserControl in XAML dice al compilatore di produrre un parziale di classe che eredita da UserControl, invece di ereditare dalla classe.

2

È possibile rimuovere completamente il ": TControl":

public partial class Notification : TControl 
{ 
} 

e scrivere:

public partial class Notification 
{ 
} 

invece, dal momento che la classe base è definita nella parte XAML, come ha scritto Paolo.

+0

Assolutamente corretto, l'ho lasciato lì comunque per ricordarmi che non eredita solo da usercontrol. TControl non fa ancora nulla, ma potrebbe in futuro – aaron

+1

Inoltre, non userei la notazione ungherese (TControl, invece di Control), diversamente da Delphi non è raccomandato in C# (o Java o C++). In Delphi è richiesto solo in quanto la lingua non è sensibile al maiuscolo/minuscolo. –

Problemi correlati