IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Recupération du datacontext dans datagrid


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Par défaut Recupération du datacontext dans datagrid
    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

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Si j'ai bien tout compris tu voudrais faire l'équivalent de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void AssociatedObject_LoadingRow(object sender, DataGridRowEventArgs e)
    {
    e.Row.MouseRightButtonDown += new MouseButtonEventHandler( (this.AssociatedObject.DataContext as ViewModelProxy<T>).ViewModel.Row_MouseRightButtonDown));
    }
    Dans ce cas tu peux continuer sur ta lancée, ça devrait donner quelque chose comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    EventInfo mouseRightButtonDown = typeof(DataGridRow).GetEvent("MouseRightButtonDown");
    MethodInfo row_MouseRightButtonDown = this.AssociatedObject.DataContext.GetType().GetProperty("ViewModel").PropertyType.GetMethod("Row_MouseRightButtonDown");
    Delegate handler = Delegate.CreateDelegate(typeof(MouseButtonEventHandler), this.AssociatedObject.DataContext, row_MouseRightButtonDown);
    mouseRightButtonDown.AddEventHandler(e.Row, handler);

Discussions similaires

  1. [VB.NET] Recupérer saisie courante dans une Datagrid
    Par jojo-la-praline dans le forum Windows Forms
    Réponses: 1
    Dernier message: 26/04/2006, 21h36
  2. comment recupérer une valeur dans un datagrid
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 23/02/2006, 17h04
  3. [C#] Probleme de pagination dans datagrid
    Par asphareth dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/07/2004, 11h25
  4. [C#] Comment supprimer une ligne dans DataGrid ?
    Par BAUDIER dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/07/2004, 16h03
  5. Réponses: 8
    Dernier message: 14/05/2004, 11h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo