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.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Visual Studio 11 beta: le novità di WPF 4.5, l'1 marzo 2012 alle 19:32
- Spettro audio con WPF, il 28 novembre 2007 alle 23:24
- Controllo WPF: AdvancedListBox, il 24 ottobre 2007 alle 19:24
- Multithreading WPF nel Binding, il 21 ottobre 2007 alle 23:40
- Com'è fatto il formato BAML di WPF?, il 12 settembre 2007 alle 21:31
- WPF attached properties + extension methods, il 10 giugno 2007 alle 22:12