Classe base comune con XAML e WPF

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.

Nella stessa categoria

Commenti

Per inserire un commento, devi registrarti alla nostra community.

© 1998-2008 - Ricciolo.NET - Il blog di Cristian "Ricciolo" Civera

TagCloud
BLOG INFO
  • Post: 169
  • Commenti: 74
  • TrackBacks: 37
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA