Demandes/problèmes:WinForms Databinding meilleures pratiques
- Je voudrais lier plusieurs propriétés d'une entité à des contrôles dans un formulaire. Certains ne sont lus que de temps en temps (selon la logique métier). - Edit: La logique est basée sur l'instance liée, et pas seulement sur son type.
- Lorsque vous utilisez une entité qui implémente
INotifyPropertyChanged
commeDataSource
, chaque notification de changement Actualise tous les contrôles liés à cette source de données (facile à vérifier - il suffit de lier deux propriétés à deux contrôles et invoquer une notification de changement sur l'un d'eux, vous verrez que les deux propriétés sont frappées et réévaluées). - Il doit y avoir notifications d'erreur conviviales (l'entité implémente
IDataErrorInfo
). (Probablement en utilisantErrorProvider
)
Utilisation de l'entité comme DataSource
des contrôles conduit à des problèmes de performance et rend la vie plus difficile quand il est temps pour un contrôle à lecture seule. J'ai pensé à créer une sorte de wrapper qui contient l'entité et une propriété spécifique pour que chaque contrôle soit lié à un DataSource
différent. En outre, ce wrapper peut contenir l'indicateur ReadOnly
pour cette propriété afin que le contrôle soit lié directement à cette valeur.
L'enveloppe pourrait ressembler à ceci:
interface IPropertyWrapper : INotifyPropertyChanged, IDataErrorInfo
{
object Value { get; set; }
bool IsReadOnly { get; }
}
Mais cela signifie aussi un ErrorProvider
différent pour chaque propriété (wrapper propriété)
Je sens que je suis en train de réinventer la roue ... Quelle est la manière «appropriée» de gérer des demandes de reliure complexes comme celles-ci?
Merci d'avance.
Hey , notez que chaque propriété a une logique de lecture seule différente. Comment emballeriez-vous l'objet de domaine pour l'activer? Et qu'en est-il de l'impact sur les performances lié au fait que la même source de données est liée à de nombreux contrôles? –