2016-06-02 1 views
2

J'ai deux classes semblables en C#Comment lier des variables de deux classes en C#?

public class Property 
{ 
    public string version;    
    public string CCodeName { get; set; } 
    public string CDoc { get; set; } 
    public string ShortName { get; set; } 
} 

public class PropertyFieldsInExcel 
{ 
    public string ShortNames { get; set; } 
    public string CNames { get; set; } 
    public string CDoc { get; set; } 
    public string Version { get; set; }   
} 

Après cela, je l'ai créé deux listes.

static List<PropertyFieldsInExcel> listA = new List<PropertyFieldsInExcel>(); 
public List<Property> listB = new List<Property>(); 

Maintenant, je veux avoir une liaison bidirectionnelle entre ces deux listes. Comme dans, chaque fois que quelque chose change dans listA l'élément correspondant dans listB doit être mis à jour. Comme si, listA[i].ShortName = "abc" alors listB[i].ShortName doit également avoir la même valeur. listA.Add() doit déclencher listB.Add() et vice versa.

Merci!

+0

Je n'ai aucune idée de comment procéder. Je suis un peu amateur en C#. Tout type de solution est acceptable pour moi. – Rama

Répondre

-1

Implémentation System.ComponentModel.INotifyPropertyChanged -Interface dans vos classes et utilisation du gestionnaire d'événements PropertyChanged pour effectuer les modifications correspondantes dans vos classes. Utilisez System.Collections.ObjectModel.ObservableCollection<> au lieu de la liste.

2

Comme @Amir dit, vous devez implémenter la classe INotifyPropertyChanged,

et votre cas est l'exemple exact de: INotifyPropertyChanged

Vous devriez avoir un essai sur cet exemple.

+0

Je suis passé par le code dans le lien. Un code similaire fonctionnerait si j'avais seulement deux classes à lier. Mais je dois lier une liste d'objets et aussi insérer ou ajouter juste comme des listes. C'est là que je suis confronté à des problèmes. – Rama

+0

Mhm avez-vous essayé de changer les listes à ObservableCollections parce qu'elles se mettent automatiquement à jour si un objet supprime ajouter etc. voici une question similaire comment synchroniser deux collections observables: https://social.msdn.microsoft.com/Forums/en- US/2e278e3c-27ab-42b5-8a7b-6828ddbb9caf/comment-synchroniser-deux-observable-collection-? Forum = wpf – SeeuD1