WPF ed ereditarietà visuale
Una delle “mancanze” che alcuni lamentano in WPF è l’assenza dell’ereditarietà visuale delle Window e dei UserControl.
In realtà esistono semplici meccanismi che permettono di ottenere lo stesso risultato.
Una delle tecniche è quella di utilizzare un template per stilare una BaseWindow o un BaseControl:
Supponiamo di avere una BaseView (Window) base dalla quale facciamo derivare tutte le finestre della nostra applicazione:
Definiremo una classe BaseView che eredita da Window e avrà tutti i metodi/propriertà necessarie:
public class BaseView : Window
{
// …
}
Questa è solo una classe e non ha parte visuale.
La parte “visuale” la disegno con Expression Blend come stile della BaseView e vado a ridefinire il ControlTemplate mettendo al suo interno tutti i controlli che voglio vedere in tutte le finestre che ereditano:
<Style TargetType=”{x:Type Common:BaseView}”>
<Setter Property=”Template”>
<Setter.Value>
<ControlTemplate TargetType=”{x:Type Common:BaseView}”>
<StacckPanel>
<!– Altri controlli: toolbar? –>
<ContentPresenter/>
<!– Altri controlli: footer? –>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Questo stile viene poi applicato a tutte i controlli di tipo BaseView che avranno quindi tutti un aspetto comune.
Quindi per sfruttare il template è sufficiente che le finestre dell’applicazione ereditino da BaseView:
<MyApplication:BaseView>
….
</MyApplication:BaseView>
Questo articolo è stato inserito da Luigi Melisi il 15 gennaio 2010 alle 17:53, ed è archiviato in .Net Framework, Programmazione, Tips and Tricks, WPF. Puoi seguire le risposte con i feeds RSS 2.0. Oppure scrivere un commento o anche segnalare un trackback dal tuo sito.
- Free Silverlight & WPF Chart Control – Visifire
- Rilasciato Microsoft Expression Studio 4
- [NET Framework 4.0] : ClientIDMode
- MSDN Week : 22 Febbraio
- Disponibile al download Expression Web 3 – Service Pack 1
- Introduzione a SketchFlow: “overview dell’area di lavoro e delle nuove funzionalità”
- Riordinare gli elementi di una lista tramite Drag and Drop con jQuery
- Come Espandere una Window Wpf solo orizzontalmente o verticalmente.
- Definire una colonna Button all’interno di una ListView con WPF