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 Monday, March 29, 2010 1:48 PM | 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.
3/29/2010 7:20 PM | dario.santarelli
Gravatar

# re: [WPF] Ereditare controlli da classi generiche

ok, quindi scanari molto particolari
3/29/2010 11:25 PM | Roberto Messora

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 1 and 5 and type the answer here:

Powered by:
Powered By Subtext Powered By ASP.NET