Bonjour à tous,
voici un petit problème que je n'arrive pas à resoudre :
j'ai un DataGridHelper qui permet de créer automatiquement les handlers pour les loadingrow et unloadingrow events. Dans ces events je voudrais que le système lance la procedure "Row_MouseRightButtonDown" se trouvant dans le ViewModel concerné comme, par exemple ceci :
void AssociatedObject_LoadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.MouseRightButtonDown += new MouseButtonEventHandler( (this.AssociatedObject.DataContext as ViewModel).Row_MouseRightButtonDown));
}
Le problème vient du fait que les viewModels du projet sont passés aux objets du XAML (DataGrid) via IDisposable class "ViewModelProxy", et le ViewModel est son propriété.
J'arrive à recupérer le nom exact de l'interface du view model correspondant comme ceci :
Type type = this.AssociatedObject.DataContext.GetType().GetProperty("ViewModel").PropertyType;
Y a t-il le moyen de typer le datacontext comme ViewModelProxy<T> et lui passer ce type au lieu du générique ?
Pour info : j'ai essayé de passer comme ViewModelProxy<Type>(type) mais j'ai une erreur disant que le "Type" ne peut pas être utilisé car "There is no implicit conversion from System.Type to System.IDisposable"
Dans la classe ViewModelProxy j'ai defini la procedure Row_MouseRightButtonDown vide qui doit être implémenté dans le view model correspondant comme 'override'.
public class ViewModelProxy<T> : INotifyPropertyChanged, IDisposable
where T : class, IDisposable
Merci beaucoup par avance pour vos réponses
Partager