DarioSantarelli.Blog("UgiDotNet");

<sharing mode=”On” users=”*” />
posts - 176, comments - 105, trackbacks - 3

My Links

News


This is my personal blog. These postings are provided "AS IS" with no warranties, and confer no rights.




Tag Cloud

Archives

Post Categories

My English Blog

[WPF] Ereditare controlli da classi generiche

In applicazioni WPF di una certa complessità è molto facile trovarsi in situazioni in cui è utile sfruttare classi base per i controlli (es. UserControl e Window). In architetture MVVM, ad esempio, è possibile far ereditare i vari controlli da classi base generiche. Tuttavia, l’ implementazione dell’ereditarietà generica in WPF talvolta non è proprio immediata, soprattutto perché non sempre gli errori di build sono esplicativi. 
In questo semplicissimo esempio di MVVM viene mostrato come si può specificare la classe base generica di una Window direttamente nello XAML.

Partiamo dalla Window:

public partial class CustomersWindow : WindowBase<CustomersViewModel>
{       
 
public CustomersWindow() : base(new CustomersViewModel())
 
{           
   
InitializeComponent();                        
 
}
  ...
}

La classe base generica della Window potrebbe essere qualcosa del genere...

public class WindowBase<T> : Window where T : ViewModelBase
{
 
public T ViewModel { get; set; } 

  public WindowBase() { }

 
public WindowBase(T viewModel)
 
{
   
this.ViewModel = viewModel;
   
base.DataContext = viewModel;
 
}
}

Arriviamo quindi al punto. Lo XAML che permette di specificare l’ereditarietà da classi generiche diventa:

<src:WindowBase
    
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
    
xmlns:src="clr-namespace:MyApplication"
    
x:Class="MyApplication.CustomersWindow"
    
x:TypeArguments="src:CustomersViewModel" ...>   
 
...
</src:WindowBase>

Tramite x:TypeArguments possiamo specificare il tipo generico della classe base. 

ATTENZIONE: questa tecnica è applicabile solo per il nodo root del documento XAML.

Technorati Tag: ,,,

 

Print | posted on lunedì 29 marzo 2010 16:48 | Filed Under [ WPF ]

Feedback

Gravatar

# re: [WPF] Ereditare controlli da classi generiche

Ad esempio, in soluzioni ibride con hosting di controlli Windows Forms che non supportano il binding dichiarativo può capitare che occorra gestire della logica di interazione con il VM direttamente nella View (Window o UserControl). In quel caso, si potrebbe stabilire che il ViewModel sia di un certo tipo o implementi una data interfaccia.
29/03/2010 22:20 | dario.santarelli
Gravatar

# re: [WPF] Ereditare controlli da classi generiche

ok, quindi scanari molto particolari
30/03/2010 02:25 | Roberto Messora
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET