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

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

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

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

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA