In questo periodo sto scrivendo una piccola applicazione WPF composta da una NavigationWindow e varie pagine di navigazione. Ogni pagina è rappresentata dalla classe Page che è l'elemento root di ogni file:
<Page x:Class="Pagina1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
...
</Page>Ho avuto la necessità però di avere una classe base, comune a tutte le pagine, che estenda la Page originale e per farlo, inizialmente mi sono intestardito a trovare un attributo che mi permettesse di specificare la classe dalla quale ereditare, un po' come in ASP.NET. Mi sono poi dato un botta in testa e pensato: che stupido!
Quando usiamo il tag Page indichiamo la classe sulla quale poi il generatore costruirà il codice e l'albero degli oggetti. Quindi basta utilizzare una nostra classe che il parser ci permette di utilizzare dichiarando un namespace xml custom.
Ho definito quindi la classe base nel mionamespace:
public class MyPage : Page {
...
}Per poi utilizzarla nella pagina:
<c:MyPage x:Class="Pagina1"
xmlns:c="clr-namespace:mionamespace"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
...
</c:MyPage>Risultato: il codice autogenerato e il mio codefile ereditano da MyPage.
Occho all'attributo x:SubClass che ha un altro scopo. Se presente indica il nome della classe del codefile, mentre x:Class indica il nome della classe autogenerata. La prima erediterà così dalla seconda.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.





Stampa
Download


