2010-07-01 4 views
0

J'utilise un contrôle de répéteur de données VB. J'ai besoin de lier une liste d'objets personnalisés aux étiquettes à l'intérieur du répéteur. Le code suivant fonctionne à l'exception de la liaison Tip.User.UserName.Comment transférer des données vers une étiquette avec une collection d'objets personnalisée en C# winforms

Comment puis-je me lier à une propriété d'une classe interne comme Tip.User.UserName

public interface ITip 
    { 
    DateTime Date { get; set; } 
    int Id { get; set; } 
    int UserId { get; set; } 
    User User { get; set; } 
    Group Group { get; set; } 
} 

public interface IUser 
{ 
    string DisplayName { get; set; } 
    string UserName { get; set; } 
} 






List<Tip> currentTips = SearchTips(toolTxtSearch.Text, Convert.ToInt32(toolCmbTipGroups.ComboBox.SelectedValue)); 


      lblTipId.DataBindings.Add(new Binding("Text", currentTips, "Id")); 
      lblTipUser.DataBindings.Add(new Binding("Text", currentTips, "User.UserName")); // this line doesnot work !!! 


      repeater.DataSource = currentTips; 
+0

Quel genre d'erreur obtenez-vous? – Simon

Répondre

0

dépend totalement de quelle erreur vous obtenez parce que la syntaxe de la propriété imbriquée devrait fonctionner pour les liaisons WinForm. (? Peut-être le DataRepeater n'utilise pas des mécanismes de liaison régulière)

En tant qu'œuvre autour d'ajouter une propriété pour vous la mise en œuvre iTip l'envelopper:

public string UsersUserName 
{ 
    get { return User != null ? User.UserName : null; } 
} 

Edit: aussi ne pas oublier de mettre en œuvre INotifyPropertyChanged sur vos objets de données si vous souhaitez mettre à jour les liaisons lorsque les valeurs le sont. Dans ce cas, envoyez les événements modifiés de propriété à la fois pour la propriété User des implémentations ITip et pour UserName de l'implémentation IUser.

+0

Je pense que ça devrait marcher. Peut-être que le nom d'utilisateur est une référence nulle? – Simon

+0

Merci pour la réponse. En fait User.UserName n'est pas null et je ne reçois aucune erreur mais rien n'est affiché sur l'étiquette, à laquelle le UserName est lié. Mais si je définis la propriété de liaison comme "Utilisateur", l'étiquette affiche le nom de classe de la classe User (Models.User) sur l'étiquette. – Amila

Questions connexes